zoukankan      html  css  js  c++  java
  • Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    依赖包(附件有下载): 

    包名 类型 操作系统
    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_HOMEjrelibext目录 

    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 

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



    LuaUtil.java 

    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.       
      10.     static {  
      11.         //配置公共函数lua文件  
      12.         //PUBLIC_LUA_FILES.add("");  
      13.     }  
      14.       
      15.     /** 
      16.      * 执行Lua脚本 
      17.      */  
      18.     public static String execLuaFunc(String lua,String funcName,String value){  
      19.         //依赖库文件要放到java.library.path下  
      20.         logger.debug("java.library.path:"+System.getProperty("java.library.path"));  
      21.           
      22.         LuaState L = LuaStateFactory.newLuaState();  
      23.         // 加载lua标准库,否则一些lua基本函数无法使用  
      24.         L.openLibs();  
      25.           
      26.         //加载公共函数文件  
      27.         if(!PUBLIC_LUA_FILES.isEmpty()){  
      28.             for(int i=0;i<PUBLIC_LUA_FILES.size();i++){  
      29.                 L.LdoFile(PUBLIC_LUA_FILES.get(i));  
      30.             }  
      31.         }  
      32.           
      33.         //加载函数串  
      34.         L.LdoString(lua);  
      35.         //调用函数名  
      36.         L.getField(LuaState.LUA_GLOBALSINDEX, funcName);  
      37.         //设置参数  
      38.         L.pushString(value);  
      39.           
      40.         //调用  
      41.         L.call(11);  
      42.           
      43.         //设置返回对象  
      44.         L.setField(LuaState.LUA_GLOBALSINDEX, "RESULT");  
      45.         LuaObject lobj = L.getLuaObject("RESULT");  
      46.            
      47.         //获取返回值  
      48.         String res = lobj.getString();  
      49.         L.close();  
      50.   
      51.         if(res == nullreturn "";  
      52.         return res;  
      53.     }  
      54. }  
  • 相关阅读:
    tf-idf sklearn
    特征工程——特征预处理
    dict 字典
    特征预处理——特征表达
    特征工程之特征选择
    机器学习技巧学习
    dataframe去重 drop_duplicates
    dataframe 转为list
    XGboost
    StratifiedShuffleSplit()函数 实现对数据集的划分
  • 原文地址:https://www.cnblogs.com/suifengbingzhu/p/3710891.html
Copyright © 2011-2022 走看看