我正在尝试在LuaJava中使用一个简单的函数(添加两个数字)。我对Lua的经验很少,我发现这很难,因为我无法找到LuaJava的深度文档。我现在可以从lua打印到java控制台,但除此之外什么都没有。
我尝试过实现一些方法,但每次都会得到同样的错误:
PANIC: unprotected error in call to Lua API (attempt to call a nil value)
这是我正在使用的代码:
import org.keplerproject.luajava.LuaState;
import org.keplerproject.luajava.LuaStateFactory;
public class Hello {
public static void main(String[] args) {
LuaState l = LuaStateFactory.newLuaState();
l.openLibs();
l.LdoFile("main.lua");
l.call(0, 0);
l.getGlobal("add");
l.pushInteger(1);
l.pushInteger(1);
l.call(2, 1);
int result = l.toInteger(1);
l.pop(1);
System.out.println("1 + 1 = " + result);
}
}
和Lua文件:
function add(a, b)
return a + b
end
我的IDE是Eclipse。提前感谢您的帮助。
答案 0 :(得分:0)
我将假设问题发生在l.call(0, 0);
行。
l.LdoFile("main.lua");
很可能不会在必须调用的堆栈上返回一个函数。这就是lua C函数luaL_loadfile
的作用。 luaL_dofile
是围绕luaL_loadfile
的宏,其中也运行返回的块功能。
所以在l.LdoFile("main.lua");
完成后我相信你在筹码上没有任何东西,你的add
函数可供使用。