windows7环境中java调用lua脚本函数

       最近lua这种语言比较火!该语言的设计目的是其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

我想说的是如何在Java下使用Lua以提高编程效率、增强你的程序可扩展性。

    首先,要在Java上使用Lua脚本,必须有关于Lua脚本解释器以及Java程序可以访问这些脚本的相关API,即相关类库。我使用的是一个叫做LuaJava的开源项目,可以在: http://download.csdn.net/detail/jwcjlu/9748334 找到LuaJava的类库等

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

其中把luajava-1.1.jar加入你的项目的ClassPath中,以便程序可以使用它提供的API

luajava-1.1.dll加入到你的系统安装盘的System32文件中如下图

这样环境就准备好了

然后打开eclipse

新建一个lua工程并新建一个LuaJavaTest的java类

LuaJavaTest.java的内容如下

package com.lua;

import org.keplerproject.luajava.LuaException;
import org.keplerproject.luajava.LuaObject;
import org.keplerproject.luajava.LuaState;
import org.keplerproject.luajava.LuaStateFactory;

public class LuaJavaTest {
static String maxAverage="function maxAverage(...)     "
			+"agr={...}                 "
			+"max=0                     "
			+"sum=0                     "
			+"for k,v in ipairs(agr) do "
			+"print(k,v)                "
			+"sum=sum+v                 "
			+"if v> max then            "
			+"max=v                     "
			+"end                       "
			+"end                       "
			+"return max,sum/#agr       "
			+"end;                      ";
public static void main(String[] args) throws LuaException {
	LuaState L = LuaStateFactory.newLuaState();
	L.openLibs(); 
	System.out.println("这里是Java程序调用Lua脚本"); 
	// 加载脚本
	L.LdoString(maxAverage);//获取Lua全局函数,java_lua_f  
        LuaObject func = L.getLuaObject("maxAverage");  
	//因为LuaObject类映射了Lua语言中所有类型,即LuaObject也是Lua函数  
	//通过java中调用LuaObject.call()函数,可以使用lua函数。  
	//该函数可以传递多个参数 或者返回多个参数  
	Object[] teste = func.call(new Object[] { 2,4,98,12,34,56},2);  
        System.out.println(teste[0]);  
	System.out.println(teste[1]);
	System.out.println("这里是Java程序调用Lua脚本end"); 
 }
}

运行一下程序如下

这里是Java程序调用Lua脚本
98.0
34.333333333333336
这里是Java程序调用Lua脚本end
1	2
2	4
3	98
4	12
5	34
6	56




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值