依赖包(附件有下载):

包名 类型 操作系统
luajava-1.1.jar jar ALL
libluajava-1.1.so .so linux
luajava-1.1.dll .dll windows

windows: 
将luajava-1.1.dll拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道)

linux: 
将libluajava-1.1.so拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道)

如果linux有问题,则按以下操作重新编译.so文件

1.编译&安装Lua 
tar -zxvf lua-5.1.5.tar.gz 
cd lua-5.1.5 
make linux install 
注:64位系统需要先编辑src/Makefile,在CFLAGS上添加-fPIC。

2.编译与安装Luajava 
tar -zxvf luajava-1.1.tar.gz 
cd luajava-1.1 
修改 config文件,添加JAVA_HOME=/broadtech/javaweb/jdk1.6.0_25 
make

3.部署。 
将编译好的libluajava-1.1.so拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道), 
luajava-1.1.jar拷贝到$JAVA_HOME\jre\lib\ext目录

4、重启项目

注:LuaJava1.1缺少了JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger (JNIEnv * env , jobject jobj , jobject cptr , jint number) 方法的实现,编译前可编辑src/c/luajava.c加入以下代码实现再make

  1. /************************************************************************
  2. *   JNI Called function
  3. *      Lua Exported Function
  4. ************************************************************************/
  5. JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger
  6. (JNIEnv * env , jobject jobj , jobject cptr , jint number)
  7. {
  8. lua_State * L = getStateFromCPtr( env , cptr );
  9. lua_pushinteger( L, ( lua_Integer ) number );
  10. }

LuaUtil.java

    1. /**
    2. * 调用Lua脚本
    3. * @author chamcon
    4. * @date 2013-11-07 15:58:48
    5. */
    6. public class LuaUtil {
    7. public static List<String> PUBLIC_LUA_FILES = new ArrayList<String>();
    8. public static Logger logger = Logger.getLogger(LuaUtil.class);
    9. static {
    10. //配置公共函数lua文件
    11. //PUBLIC_LUA_FILES.add("");
    12. }
    13. /**
    14. * 执行Lua脚本
    15. */
    16. public static String execLuaFunc(String lua,String funcName,String value){
    17. //依赖库文件要放到java.library.path下
    18. logger.debug("java.library.path:"+System.getProperty("java.library.path"));
    19. LuaState L = LuaStateFactory.newLuaState();
    20. // 加载lua标准库,否则一些lua基本函数无法使用
    21. L.openLibs();
    22. //加载公共函数文件
    23. if(!PUBLIC_LUA_FILES.isEmpty()){
    24. for(int i=0;i<PUBLIC_LUA_FILES.size();i++){
    25. L.LdoFile(PUBLIC_LUA_FILES.get(i));
    26. }
    27. }
    28. //加载函数串
    29. L.LdoString(lua);
    30. //调用函数名
    31. L.getField(LuaState.LUA_GLOBALSINDEX, funcName);
    32. //设置参数
    33. L.pushString(value);
    34. //调用
    35. L.call(1, 1);
    36. //设置返回对象
    37. L.setField(LuaState.LUA_GLOBALSINDEX, "RESULT");
    38. LuaObject lobj = L.getLuaObject("RESULT");
    39. //获取返回值
    40. String res = lobj.getString();
    41. L.close();
    42. if(res == null) return "";
    43. return res;
    44. }
    45. }

Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)的更多相关文章

  1. Java调用Lua脚本(热载实现)

    前言: Lua作为解析执行的脚本语言, 往往是易变逻辑编写的首选语言, 尤其是在游戏领域. C/C++和Lua的结合, 往往了标配. 比如Redis, Nginx其对Lua的支持, 也是杠杠的. 当然 ...

  2. Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本

    一.引言         学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写L ...

  3. lua调用java java调用lua[转载]

    转载:http://dualface.github.io/blog/2013/01/01/call-java-from-lua/LuaJavaBridge - Lua 与 Java 互操作的简单解决方 ...

  4. Java调用Lua(转)

    Java 调用 Lua app发版成本高,覆盖速度慢,覆盖率页低.一些策略上的东西如果能够从服务端控制会方便一些.所以考虑使用Lua这种嵌入式语言作为策略实现,Java则是宿主语言. 总体上看是一个模 ...

  5. java调用python脚本并向python脚本传递参数

    1.安装Eclipse 先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成 ...

  6. 用C#调用Lua脚本

    用C#调用Lua脚本 一.引言 学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何 ...

  7. 通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  8. Java 调用 shell 脚本详解

    这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...

  9. (转)java调用python脚本

    这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...

随机推荐

  1. MySQL命令记录1

    mysql命令行 开启:net start mysql56关闭:net start mysql56(这两种情况必须有管理员权限) 登陆:mysql -h localhost -u root -p(lo ...

  2. Scrapy安装问题

    按照说明直接使用pip install scrapy会有两个问题: fatal error: 'ffi.h' file not found fatal error: 'libxml/xmlversio ...

  3. 变态最大值(nyoj)

    变态最大值 描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解决了这个问题,但是问题又来了. 他想在一组数中找一个数,这个数可以不是这组数 ...

  4. codeforces 518A. Vitaly and Strings

    A. Vitaly and Strings time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. SQL Server 与 Windows 内存使用上的约定

    什么时候SQL Server 会释放出自己的内存!以提供给别的程序用呢? --------------------------------------------------------------- ...

  6. Codeforces #345 Div.1

    Codeforces #345 Div.1 打CF有助于提高做题的正确率. Watchmen 题目描述:求欧拉距离等于曼哈顿距离的点对个数. solution 签到题,其实就是求有多少对点在同一行或同 ...

  7. sed简单实例练习

    sedfile内容如下: Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300 Betty Boop: ...

  8. uva 10026 Shoemaker's Problem _贪心

    题意:鞋匠现在有n个工作要做,每个工作要x天,没延迟一天需要付款y,鞋匠每天只能做一个工作,问使得鞋匠最少赔款的工作顺序. 思路:工作和工作之间排序,如果a.value*b.day>b.valu ...

  9. hdu 1978 How many ways(dp)

    Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标 ...

  10. SQL Server中的sysobjects

    摘自:http://www.cnblogs.com/bugY/archive/2011/09/21/2184182.html 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是 ...