我很难通过安卓上的LuaJ调用Java脚本,这需要其他Lua脚本。我认为这与我目前的工作目录有关。
我在Java中尝试的是:
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:
require "Foo"
local str = Foo.getString()
print(str)对于这个特定的测试,为了简单起见,两个lua文件都位于同一个目录中,但我需要其他lua文件的相对路径。
我试过和package.path一起玩,但是我尝试过的东西都没有用。在Android中运行时,默认情况下是package.path == "?.lua“。
我已经通过命令行使用相对路径运行了这个测试,并且在Eclipse中使用了Koneki,它们运行得很好。具体而言,正是Android环境失败了。
此外,我还可以获得Lua脚本,没有要求在Android中工作良好。
发布于 2014-12-21 15:45:11
想出了一个解决办法。将绝对路径添加到package.path有效。例如,我的Lua脚本包含在“资产”文件夹中,因此添加:
package.path = package.path .. ";/assets/lua/?.lua;"在/assets/lua/中包含的文件的要求生效之前。
同样,移除前面的反斜杠:
package.path = package.path .. ";assets/lua/?.lua;"同样有效,因此在默认情况下,LuaJ在Android项目的根目录上启动package.path。但是,我无法找到其他相对路径,例如:
package.path = package.path .. ";assets/../assets/lua/?.lua;"https://stackoverflow.com/questions/27588723
复制相似问题