2012-01-21 6 views
2

私はLuaJを使用していますが、私は.luaファイルにたくさんの関数が入っています。これらの関数をJavaでLuaJで使用するためにインポートするにはどうすればよいですか?LuaJインポートLuaメソッド

答えて

3

1つのオプションは、ファイルをJavaコードにコンパイルしてインポートすることです。別の方法として、組み込み可能なインタプリタを使用してJavaコードから直接Luaファイルを呼び出す方法があります。


* EDIT *

ダウンロードしたドキュメントの良い例があります。 JavaソースコードへのLuaスクリプトをコンパイルするには、あなたがこのようなものだろう

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); 
    } 
} 

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 

をこれらの例はかなりあるのJavaからスクリプトを実行するには、このような何かをするだろうあなたがLuajをダウンロードするときに取得するREADME.htmlから取ったものです。私は利用可能な機能をよく理解するために、最後まで読んでおくことを強くお勧めします。

+0

私は、スクリプト言語を埋め込むには本当に新しいです。どうすればこのことができますか? – Anonymous

+0

ダウンロードされたドキュメントにいくつかの良い例があります。インストールされているlua4jディレクトリのREADME.htmlを参照してください。 – Perception

+0

私はしばらくそこを見ましたが、必要なものを見つけることができませんでした。私はluaファイルを実行する方法を示したチュートリアルに従っていましたが、ファイルから特定の関数を実行できるかどうかは疑問でした。 – Anonymous

1

私はこの同じ問題を自分自身で解決しようとしていましたが、この質問は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