當前位置:編程學習大全網 - 源碼下載 - lua如何調用java程序

lua如何調用java程序

Lua是壹個實用的腳本語言,相對於Python來說,比較小巧,但它功能並不遜色,特別是在遊戲開發中非常實用(WoW采用的就是Lua作為腳本的)。Lua在C\C++的實現我就不多說了,網上隨便壹搜,到處都是這方面的介紹,我想說的是如何在Java下使用Lua以提高編程效率、增強妳的程序可擴展性。

首先,要在Java上使用Lua腳本,必須有關於Lua腳本解釋器以及Java程序可以訪問這些腳本的相關API,即相關類庫。我使用的是壹個叫做LuaJava的開源項目,可以在: /files/wf/lua.txt),是個文本文件(lua.txt)。打開UltraEdit安裝目錄下的wordfile.txt,把lua.txt文件中的內容拷貝粘貼到wordfile.txt的末尾,存盤,OK,於是UltraEdit語法高亮項多出Lua壹項,可以選擇使用了。其他語言的語法高亮支持與此類似。

但妳如果是Java開發者,應該都用過Eclipse吧?可否在Eclipse下直接就寫Lua腳本呢?答案是可以的!

這當然是Eclipse的強大的插件管理功能啦,妳可以去下載luaeclipse插件來使妳的Eclipse擁有編寫Lua腳本的能力(既可以高亮顯示妳的腳本,是不是很爽呢),妳可以在這裏下載:.br/luaeclipse/

下載後安裝後,妳的Eclipse就可以建立和編寫Lua腳本了,註意設置壹下首選項中關於LUA的屬性(Eclipse安裝插件就不用我說了吧)

好了,現在壹切都準備好了,讓我們來壹個HelloWorld吧!

首先在Eclipse先建立壹個TestLua項目,然後編寫如下程序:

import org.keplerproject.luajava.*;

public class Hello

{

public static void main(String[] args)

{

LuaState L = LuaStateFactory.newLuaState();

L.openLibs();

System.out.println("這裏是Java程序調用Lua腳本");

// 加載腳本hello.lua,並執行

L.LdoFile("res/hello.lua");

}

}

好了,程序寫完了,當然是保存為Hello.java咯,註意,這是Java代碼!這是Java代碼調用了壹個叫hello.lua的腳本,下邊是這個腳本文件的內容(妳可以直接把他們復制到妳的hello.lua文件中):

================================================================

--基本方法

print("您現在使用的是LUA腳本語言")

print("讓我們壹起來感受它的奇妙吧!\n")

--特點1,賦值

a={1,2}

b=a

print(a==b, a~=b) --輸出 true, false

a={1,2}

b={1,2}

print(a==b, a~=b) --輸出 false, true

--特點2,交換

a,b=1,2

a,b=b,a

print(a)

print(b)

print("連接".."字符串"..2^3)

print(type(2))

--while循環

i=0

print("while循環例子")

while i<5

do

print(i);

i=i+1

end

--repeat循環

i=0

print("repeat循環例子")

repeat

print(i)

i=i+1

until i>=5

--for循環

print("for循環例子")

for i=0,5,1

do

print(i)

end

T1={}

T1[1] = 10

print(T1[1])

function fun(a,b,...)

print(a)

print(b)

print(arg[1])

print(arg[2])

print(arg[3])

return

end

a,b=2,3

fun(a,b,200,400,500)

========================================================

好了,上邊的腳本如果妳不懂什麽意思也沒關系,直接運行壹下吧

妳可以執行編譯執行那個Hello.java程序就可以了,就會看到如下的輸出結果:

========================================================

這裏是Java程序調用Lua腳本

您現在使用的是LUA腳本語言

讓我們壹起來感受它的奇妙吧!

true false

false true

2

1

連接字符串8

number

while循環例子

0

1

2

3

4

repeat循環例子

0

1

2

3

4

for循環例子

0

1

2

3

4

5

10

2

3

200

400

500

==========================================================

怎樣,是不是很爽呢?覺得沒意思?好,在來壹段腳本吧:

frame = luajava.newInstance("java.awt.Frame", "Lua Java Console")

console = luajava.newInstance("java.awt.TextArea")

buttons_pn = luajava.newInstance("java.awt.Panel")

execute_bt = luajava.newInstance("java.awt.Button", "Execute")

clear_bt = luajava.newInstance("java.awt.Button", "Clear")

exit_bt = luajava.newInstance("java.awt.Button", "Exit")

frame:setSize(600,300)

buttons_pn:add(execute_bt)

buttons_pn:add(clear_bt)

buttons_pn:add(exit_bt)

BorderLayout = luajava.bindClass("java.awt.BorderLayout")

frame:add(BorderLayout.NORTH, console)

frame:add(BorderLayout.SOUTH, buttons_pn)

frame:pack()

frame:show()

--

-- Listeners

--

execute_cb = {

actionPerformed = function(ev)

print("execute")

pcall(loadstring(console:getText()))

end

}

jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb)

execute_bt:addActionListener(jproxy)

clear_cb = {actionPerformed= function (ev)

print("clear");

console:setText("");

end

}

jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb)

clear_bt:addActionListener(jproxy)

exit_cb = { actionPerformed=function (ev)

print("exit")

frame:setVisible(false)

frame:dispose()

end

}

jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb)

exit_bt:addActionListener(jproxyb)

close_cb = { }

function close_cb.windowClosing(ev)

print("close")

frame:setVisible(false)

frame:dispose()

end

function close_cb.windowActivated(ev)

print("act")

end

jproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb)

frame:addWindowListener(jproxy)

這段腳本運行後妳將會非常想進壹步了解LUA的奧妙,至於什麽我就不說了,妳們自己運行看看吧。。。哈哈,就寫到這裏了,我去上下WC。。。。

  • 上一篇:快手上如何在封面上編輯多個字幕啊
  • 下一篇:百分懸賞修改2個通達信公式為選股指標
  • copyright 2024編程學習大全網