gpt4 book ai didi

android - 在 Android 上使用 LuaJ 从 Lua 脚本中请求其他 lua 脚本

转载 作者:行者123 更新时间:2023-11-29 01:36:35 27 4
gpt4 key购买 nike

我在需要其他 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();

路径测试.lua:

require "Foo"
local str = Foo.getString()
print(str)

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

我试过使用 package.path,但没有任何效果。在Android中运行时,默认package.path == "?.lua"。

我已经通过命令行使用相对路径运行了这个测试,并且在 Eclipse 中使用了 Koneki,它们运行良好。尤其是 Android 环境出现故障。

此外,我能够获得在 Android 中正常工作的 Lua 脚本。

最佳答案

找到一个解决方案。将绝对路径添加到 package.path 有效。例如,我的 Lua 脚本包含在我的 Assets 文件夹中,因此添加:

package.path = package.path .. ";/assets/lua/?.lua;"

在对包含在 /assets/lua/ 中的文件进行 require 之前。

同样,删除前导反斜杠:

package.path = package.path .. ";assets/lua/?.lua;"

也可以,所以 LuaJ 似乎默认在 Android 项目的根目录上启动 package.path。但是,我无法让其他相对路径起作用,例如:

package.path = package.path .. ";assets/../assets/lua/?.lua;"

关于android - 在 Android 上使用 LuaJ 从 Lua 脚本中请求其他 lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27588723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com