2012-01-21 38 views
2

我正在使用LuaJ,並且我有一個填充了一堆函數的.lua文件。如何將這些函數導入到Java中與LuaJ一起使用?LuaJ導入Lua方法

回答

3

一種選擇是將文件編譯爲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。我強烈建議閱讀它,以便更好地掌握可用的功能。

+0

我真正的新嵌入的腳本語言。我將如何做這些? – Anonymous

+0

Theres在下載的文檔中有一些很好的例子。請參閱已安裝的lua4j目錄中的README.html。 – Perception

+0

我在那裏看了一會兒,但找不到我需要的東西。我跟着教程向我展示瞭如何執行lua文件,但我想知道是否可以從文件中執行某個功能。 – Anonymous

1

我正在四處尋找解決這個問題,儘管這個問題是從一月份開始的,希望這篇文章能夠幫助其他人尋求幫助。

test.java:

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

public class test 
{ 
    public static void main(String[] args) 
    { 
     //run the lua script defining your function 
     LuaValue _G = JsePlatform.standardGlobals(); 
     _G.get("dofile").call(LuaValue.valueOf("./test.lua")); 

     //call the function MyAdd with two parameters 5, and 5 
     LuaValue MyAdd = _G.get("MyAdd"); 
     LuaValue retvals = MyAdd.call(LuaValue.valueOf(5), LuaValue.valueOf(5)); 

     //print out the result from the lua function 
     System.out.println(retvals.tojstring(1)); 
    } 
} 

test.lua:

function MyAdd(num1, num2) 
    return num1 + num2 
end