我无法通过Android上的LuaJ从Java调用Lua脚本,需要其他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”。
我通过命令行使用相对路径运行此测试,使用Koneki运行Eclipse内部,并且它们工作正常。特别是Android环境失败了。
此外,我能够获得Lua脚本而无需在Android中正常工作。
答案 0 :(得分:1)
找出一个解决方案。添加package.path的绝对路径。例如,我的Lua脚本包含在我的assets文件夹中,因此添加:
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;"