I figured out how to make Lua scripts require other Lua scripts in an Android environment.LuaJ - Установить package.path в Java-коде перед вызовом сценария Lua из файла
Однако это решение имеет конфигурацию package.path внутри самого Lua-скрипта верхнего уровня. Я хочу переместить конфигурацию package.path в код Java, который запускает сценарий, потому что package.path специфичен для среды Android, в то время как сценарий можно запускать в любом месте.
Вот что я пробовал:
InputStream input getAssets().open("lua/test/pathTest.lua");
Prototype prototype = LuaC.instance.compile(input, "pathTest.lua");
Globals globals = JsePlatform.standardGlobals();
globals.load(new BaseLib());
globals.load("package.path = package.path .. ';/assets/lua/?.lua;/assets/lua/test/?.lua'");
LuaClosure c = new LuaClosure(prototype, globals);
c.call();
Я также попробовал несколько других форм как:
globals.load(new StringReader("package.path = package.path .. \";/assets/lua/?.lua;/assets/lua/test/?.lua\""), "pathTest.lua");
Или принимать результат LuaValue от нагрузки и попутно, что в LuaClosure. Все они приводят к тому, что сценарий не работает при первом require
, не имея возможности найти сценарий с ссылкой.
У кого-нибудь есть идеи?
* edit - Если кто знает, как установить рабочий каталог в папку/assets/lua /, поэтому я могу использовать относительные пути оттуда в сценарии Lua, что было бы предпочтительнее.