LuaJ 导入 Lua 方法。

我正在使用 LuaJ,并有一个包含许多函数的 .lua 文件。如何使用 LuaJ 将这些函数导入到 Java 中?

原文链接 https://stackoverflow.com/questions/8956564

点赞
stackoverflow用户680925
stackoverflow用户680925

一种选择是将文件编译为Java代码并导入。另一种选择是使用可嵌入解释器直接从你的Java代码调用Lua文件。


\* 编辑 *

下载的文档中有很好的例子。要在Java中运行脚本,你可以这样做:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class LuaTest {
    public static void main(String[] args) throws Exception {
        String scriptFilePath = "/Users/developer/work/luaj-2.0.2/examples/lua/hello.lua";

        Reader reader = new FileReader(new File(scriptFilePath));
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine e = mgr.getEngineByExtension(".lua");
        Object result = e.eval(reader);
    }
}

要将Lua脚本编译为Java源代码,你可以这样做:

java -cp lib/luaj-jse-2.0.2.jar lua2java -s examples/lua -d . hello.lua
javac -cp lib/luaj-jse-2.0.2.jar hello.java

这些例子基本上是从下载Luaj时得到的README.html中提取出来的。我强烈建议你从头到尾阅读它,以获得对可用功能的良好掌握。

2012-01-21 21:56:43
stackoverflow用户1800113
stackoverflow用户1800113

我自己正在寻找解决这个问题的方法,尽管这个问题是从一月份提出的,但希望这篇帖子能帮助其他正在寻求帮助的人。

test.java:

import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.jse.JsePlatform;

public class test
{
    public static void main(String[] args)
    {
        //运行定义函数的lua脚本
        LuaValue _G = JsePlatform.standardGlobals();
        _G.get("dofile").call( LuaValue.valueOf("./test.lua"));

        //使用两个参数5和5调用MyAdd函数
        LuaValue MyAdd = _G.get("MyAdd");
        LuaValue retvals = MyAdd.call(LuaValue.valueOf(5), LuaValue.valueOf(5));

        //打印lua函数的结果
        System.out.println(retvals.tojstring(1));
    }
}

test.lua:

function MyAdd( num1, num2 )
    return num1 + num2
end
2012-11-05 12:35:55