luaJ是一個java實現的lua腳本解釋器,適合嵌入java應用中。個人比較喜歡libgdx這個引擎,所以對luaJ項目也有一些關注。cocos2d貌似也用到了這個。對於一些不想使用本地庫的java項目,luaJ是個不錯的選擇。我下載的是luaJ-3.0.1版本,解壓后可以得到完整的工程目錄。主要用到的東西是lib文件夾中的luaj-jse-3.0.1.jar這個包,(另一個是luaJ-jme-3.0.1.jar)。版本不同可能有出入,使用帶有jse的包就可以了。
1、執行lua腳本
新建一個lua文件hello.lua,寫入以下內容:
print('hello')
方便起見,將hello.lua文件新建在lib文件夾中,跟luaJ-jse-3.0.1.jar在同一個目錄即可,然后打開命令行,cd到這個文件夾,輸入命令:
java -cp luaj-jse-3.0.1.jar lua hello.lua
即可看到輸出結果:hello
上面的luaj-jse-3.0.1.jar以及hello.lua部分可以替換成其他的目錄。
2、編譯lua腳本為lua字節碼
上面的方法使用lua命令解釋模式執行lua代碼,這種方法比較慢;我們可以使用luac命令來編譯lua代碼成為lua字節碼,還是以hello.lua為例,進入lib目錄下,輸入:
java -cp luaj-jse-3.0.1.jar luac hello.lua
執行完畢后,當前文件夾下多出了luac.out文件,這個文件就是hello.lua編譯后的lua字節碼。
那么如何指定輸出路徑呢?可以使用命令
java -cp luaj-jse-3.0.1.jar luac hello.lua -o hello.luac
加上 -o [路徑]來指定輸出文件的位置。上面的命令執行后會在當前文件lib下面生成hello.luac文件。
接下來執行lua字節碼。以hello.luac為例,命令如下:
java -cp luaj-jse-3.0.1.jar lua hello.luac
如果沒有指定輸出:
java -cp luaj-jse-3.0.1.jar lua luac.out
3、lua腳本編譯成java字節碼
這個功能很強大,不過可能用的人不多...這個命令是luajc;使用這個命令需要安裝ant,以及bcel-5.2.jar這個包。后者可以百度英文搜索bcel-5.2來下載。下載完成后把bcel-5.2.jar放到lib目錄下。方便起見同樣切換到lib目錄下執行。
命令如下:
java -cp luaj-jse-3.0.1.jar;bcel-5.2.jar luajc -s . -d . hello.lua
特別注意那兩個點,代表當前目錄:-s后面是源代碼目錄所在,-d后是輸出的class文件目錄所在,最后是文件名。
執行后在lib目錄下生成了hello.class
接下來執行hello.class文件,同樣在lib目錄下執行
java -cp luaj-jse-3.0.1.jar;. lua -l hello
運行后輸出hello