我在需要其他 Lua 脚本的 Android 上通过 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"。
我已经通过命令行使用相对路径运行了这个测试,并使用 Koneki 在 Eclipse 中运行了这个测试,它们工作正常。尤其是失败的 Android 环境。
此外,我无需在 Android 中正常工作即可获得 Lua 脚本。