我正在使用LuaJ,並且我有一個填充了一堆函數的.lua
文件。如何將這些函數導入到Java中與LuaJ一起使用?LuaJ導入Lua方法
2
A
回答
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。我強烈建議閱讀它,以便更好地掌握可用的功能。
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
相關問題
- 1. Java方法編譯Lua代碼與LuaJ解釋
- 2. LuaJ - 在Java中創建Lua函數
- 3. 如何在Luaj中加載Lua-Filesystem和Lua-Penlight
- 4. (更新)LuaJ:無法在Lua腳本中調用'require'函數
- 5. LuaJ加入的Java
- 6. 在Android上使用LuaJ在Lua腳本中需要其他lua腳本
- 7. Luaj - 從Lua添加JButton動作偵聽器
- 8. Luaj支持模塊函數來定義Lua模塊嗎?
- 9. 將參數傳遞給luaj的lua函數
- 10. 方法不導入
- 11. 導入.getMap方法
- 12. NoClassDefFoundError與LuaJ
- 13. 無法導入Angular2引導方法
- 14. 的Lua:類方法跳過
- 15. Lua中的方法聲明
- 16. LUA導入.BVH運動數據/ LUA表使用表動畫.OBJ
- 17. 如何編譯LuaJ?
- 18. 用__main__方法導入python
- 19. 'getSupportFragmentManager()'方法未被導入
- 20. Cakephp 1.3導入方法
- 21. 在方法中導入類?
- 22. 角4導入isPropertyUpdated方法
- 23. 將Lua導入到Cocos2d項目
- 24. 在Lua中導入一串名字
- 25. Lua加入方式:1字符
- 26. 在c中寫入oo Lua接口的最佳方法?
- 27. Lua:如何從C中引用lua類中的lua方法以備後用?
- 28. Lua Wrapper類 - 通過DLL向Lua公開C++靜態方法
- 29. lua/luabind - 通過lua添加和覆蓋類方法
- 30. HAProxy的LUA支持:想打電話從Lua core.action方法文件
我真正的新嵌入的腳本語言。我將如何做這些? – Anonymous
Theres在下載的文檔中有一些很好的例子。請參閱已安裝的lua4j目錄中的README.html。 – Perception
我在那裏看了一會兒,但找不到我需要的東西。我跟着教程向我展示瞭如何執行lua文件,但我想知道是否可以從文件中執行某個功能。 – Anonymous