Я пытаюсь запустить скрипт lua из java, используя приведенный ниже код, и он работает нормально.
Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.loadfile("com/example/hello.lua");
chunk.call();
Теперь я хочу передать аргументы командной строки в свой сценарий lua, может ли кто-нибудь помочь mw с кодом, как передать аргумент командной строки в файл lua из java.
Похоже, вы используете LuaJ. Во-первых, «куски» Lua — это просто специальные функции, которые получают свои аргументы в ... vararg. hello.lua может выглядеть следующим образом:
local arg1, arg2 = ...
print("arg1", arg1, "arg2", arg2)
Используя loadfile Lua, вы можете передавать аргументы просто как аргументы функции при выполнении загруженного фрагмента:
local chunk = assert(loadfile"hello.lua") -- compile & load the file, do not run it
chunk("first arg", "second arg") -- run the file with two args
Ваш текущий код Java вызывает chunk.call() без каких-либо аргументов, что эквивалентно chunk() в Lua. Вы можете использовать метод invoke для передачи списка LuaValue аргументов:
Просто замените chunk.call(); на
chunk.invoke(new LuaValue[] {LuaValue.valueOf("first argument"), LuaValue.valueOf("second argument")});
Для вызова фрагмента с двумя аргументами, эквивалентными вызову в приведенном выше примере Lua.