首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android上的LuaJ从lua脚本中要求其他Lua脚本

使用Android上的LuaJ从lua脚本中要求其他Lua脚本
EN

Stack Overflow用户
提问于 2014-12-21 11:00:44
回答 1查看 934关注 0票数 2

我很难通过安卓上的LuaJ调用Java脚本,这需要其他Lua脚本。我认为这与我目前的工作目录有关。

我在Java中尝试的是:

代码语言:javascript
复制
InputStream input = EvilApp.getContext().getAssets().open("lua/pathTest.lua");
Prototype p = LuaC.instance.compile(input, "pathTest.lua");
LuaValue g = JsePlatform.standardGlobals();
LuaClosure c = new LuaClosure(p, g);
c.call();

pathTest.lua:

代码语言:javascript
复制
require "Foo"
local str = Foo.getString()
print(str)

对于这个特定的测试,为了简单起见,两个lua文件都位于同一个目录中,但我需要其他lua文件的相对路径。

我试过和package.path一起玩,但是我尝试过的东西都没有用。在Android中运行时,默认情况下是package.path == "?.lua“。

我已经通过命令行使用相对路径运行了这个测试,并且在Eclipse中使用了Koneki,它们运行得很好。具体而言,正是Android环境失败了。

此外,我还可以获得Lua脚本,没有要求在Android中工作良好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-21 15:45:11

想出了一个解决办法。将绝对路径添加到package.path有效。例如,我的Lua脚本包含在“资产”文件夹中,因此添加:

代码语言:javascript
复制
package.path = package.path .. ";/assets/lua/?.lua;"

/assets/lua/中包含的文件的要求生效之前。

同样,移除前面的反斜杠:

代码语言:javascript
复制
package.path = package.path .. ";assets/lua/?.lua;"

同样有效,因此在默认情况下,LuaJ在Android项目的根目录上启动package.path。但是,我无法找到其他相对路径,例如:

代码语言:javascript
复制
package.path = package.path .. ";assets/../assets/lua/?.lua;"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27588723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档