「java加载luajit」java加载jar包

博主:adminadmin 2022-12-01 15:11:07 63

本篇文章给大家谈谈java加载luajit,以及java加载jar包对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

新人求助.unity3d能不能用lua来写代码

它只用来做了配置解析……

C#下的Lua效率很低…大概是C的1/100…不适合做主逻辑

cocos2dx-3.7版本lua程序入口在哪

一、主要分为两个大步骤,Lua工程的修改,android工程的修改

二、工程环境

开发工具:Cocos-Code-IDE

Lua版本 : Lua 5.1

java版本:1.7

NDK版本:android-ndk-r10c

ANT版本:apache-ant-1.9.4

Framwork:cocos-2dx-3.4

python : 2.7.3

三、Lua工程中的修改

1.在Cocos-Code-IDE中新建Lua工程

可以在这个工程目录中找到Luaj:

2.新建一个lua类,写上调用android的方法。

我在src/app/models/下面新建了一个Lua文件,命名为:luajTest.lua

其中代码如下:

local luaj = require "cocos.cocos2d.luaj" --引入luaj

local luajTest = class("luajTest") -- 构建lua 类

function luajTest:callandroid() --调用android的方法实现

--包名/类名 这个可以在对应的android工程的manifest中得到

local className="org/cocos2dx/lua/AppActivity"

local args = { "hello android", callbackLua }

local sigs = "(Ljava/lang/String;I)V" --传入string参数,无返回值

--luaj 调用 Java 方法时,可能会出现各种错误,因此 luaj 提供了一种机制让 Lua 调用代码可以确定 Java 方法是否成功调用。

--luaj.callStaticMethod() 会返回两个值

--当成功时,第一个值为 true,第二个值是 Java 方法的返回值(如果有)

--当失败时,第一个值为 false,第二个值是错误代码

local ok,ret = luaj.callStaticMethod(className,"test",args,sigs)

if not ok then

item:setString(ok.."error:"..ret)

end

end

return luajTest123456789101112131415161718192021222324

3.在入口场景中调用android方法。

我修改了src/app/views/MainScene.lua的场景跳转方法,如下:

local MainScene = class("MainScene", cc.load("mvc").ViewBase)

local testluaj = require('src.app.models.luajTest')--引入luajTest类

function MainScene:onCreate()

-- add background image

display.newSprite("MainSceneBg.jpg")

:move(display.center)

:addTo(self)

-- add play button

local playButton = cc.MenuItemImage:create("PlayButton.png", "PlayButton.png")

:onClicked(function()

self:getApp():enterScene("PlayScene") --跳转了一个场景

--在这里尝试调用android static代码

local testluajobj = testluaj.new(self)

testluajobj.callandroid(self);

end)

cc.Menu:create(playButton)

:move(display.cx, display.cy - 200)

:addTo(self)

end

return MainScene1234567891011121314151617181920212223242526272829

4.以上为Lua工程中的修改。

四、android工程的修改

1.找到相对应的android工程的。

Lua工程通过Runtime构建的android工程在Lua工程\framewokes\runtime-src\proj.android中。

2.根据luajTest.lua类中定义的包名类名,找到AppActivity.java

3.打开AppActivity.java,在空白处加上uajTest.lua类中定义要调用的方法test.

public static void test(final String param,final int luaFunc) {

System.out.println("----传过来的参数----param:"+param);

System.out.println("-------luaFunc:"+luaFunc);

/**

* 给lua返回一个字符串

*/

Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunc, "success");

/**

* 移除luaId

*/

Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFunc);

}

1234567891011121314

记得在文件上面引入Cocos2dxLuaJavaBridge类。

import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;1

4.到此,修改完成。构建apk,安装到手机中,看Log.

如果看到以下Log,证明你的Luaj成功调用了java代码了。

lua如何调用java程序

Lua是一个实用的脚本语言,相对于Python来说,比较小巧,但它功能并不逊色,特别是在游戏开发中非常实用(WoW采用的就是Lua作为脚本的)。Lua在C\C++的实现我就不多说了,网上随便一搜,到处都是这方面的介绍,我想说的是如何在Java下使用Lua以提高编程效率、增强你的程序可扩展性。

首先,要在Java上使用Lua脚本,必须有关于Lua脚本解释器以及Java程序可以访问这些脚本的相关API,即相关类库。我使用的是一个叫做LuaJava的开源项目,可以在: 找到LuaJava的类库以及源代码,使用文档资等

下载下来解压后包括两个文件(我下载的是1.1版本的): luajava-1.1.jar 文件和 luajava-1.1.dll动态连接库文件

luajava-1.1.jar就容易了,就是将其加入你的项目的ClassPath中,以便程序可以使用它提供的API

luaJava-1.1.dll就麻烦了,你必须将其加入你的Windows安装目录下,比如你用的是XP,安装在C盘,那就直接将其加入C:\WINDOWS目录下即可,当然你也可以将其加入你的JDK下的jre下

好了,现在你的项目就可以使用Lua脚本来实现动态扩展功能了!不过不要急,你还得有工具来写Lua脚本吧?不可能用记事本来写吧???????

你可以使用UltraEdit,但你用UE打开lua文件后,会发现和记事本差不多,并没有高亮(可能新版本的支持Lua脚本了),如果你的UE不支持,那么先去UltraEdit的官网下载支持Lua的Wordfiles文件(),是个文本文件(lua.txt)。打开UltraEdit安装目录下的wordfile.txt,把lua.txt文件中的内容拷贝粘贴到wordfile.txt的末尾,存盘,OK,于是UltraEdit语法高亮项多出Lua一项,可以选择使用了。其他语言的语法高亮支持与此类似。

但你如果是Java开发者,应该都用过Eclipse吧?可否在Eclipse下直接就写Lua脚本呢?答案是可以的!

这当然是Eclipse的强大的插件管理功能啦,你可以去下载luaeclipse插件来使你的Eclipse拥有编写Lua脚本的能力(既可以高亮显示你的脚本,是不是很爽呢),你可以在这里下载:

下载后安装后,你的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 i5

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循环例子

1

2

3

4

repeat循环例子

1

2

3

4

for循环例子

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。。。。

lua和java有关系吗

ava和lua之间进行交互,可是用一种基于jni的luajavaBridge方法,目前已经集成在quick-cocos引擎中了。

luaj的功能整理:

1.lua能够查找java的方法;

2.lua能够把函数作为参数传入到java;

3.lua能够从java获得查找调用方法的返回值;

4.java能够调用lua的函数;

关于java加载luajit和java加载jar包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。