包名 | 类型 | 操作系统 |
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
/************************************************************************ * JNI Called function * Lua Exported Function ************************************************************************/ JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger (JNIEnv * env , jobject jobj , jobject cptr , jint number) { lua_State * L = getStateFromCPtr( env , cptr ); lua_pushinteger( L, ( lua_Integer ) number ); }
LuaUtil.java
/** * 调用Lua脚本 * @author chamcon * @date 2013-11-07 15:58:48 */ public class LuaUtil { public static ListPUBLIC_LUA_FILES = new ArrayList (); public static Logger logger = Logger.getLogger(LuaUtil.class); static { //配置公共函数lua文件 //PUBLIC_LUA_FILES.add(""); } /** * 执行Lua脚本 */ public static String execLuaFunc(String lua,String funcName,String value){ //依赖库文件要放到java.library.path下 logger.debug("java.library.path:"+System.getProperty("java.library.path")); LuaState L = LuaStateFactory.newLuaState(); // 加载lua标准库,否则一些lua基本函数无法使用 L.openLibs(); //加载公共函数文件 if(!PUBLIC_LUA_FILES.isEmpty()){ for(int i=0;i
本文链接: http://chamcon.iteye.com/blog/1972995
参考:http://www.chinasb.org/archives/2013/06/5115.shtml