LUA 桥 LuaJ 使用笔记

  • 开干前的准备
    1.安装lua插件 Intellij 系列 推荐emmylua

mac 只有 lua

2.下载LuaJ
推荐使用静态jar 下载地址
下载后选择luaj-jse-3.0.1.jar使用
maven库:compile 'org.luaj:luaj-jse:3.0.1'


*开鲁
lua代码


    private void initLua(){
        LogsUtils.iNative("initLua JsePlatform.standardGlobals()");
         globals = JsePlatform.standardGlobals();
        LogsUtils.iNative("initLua globals.loadfile");
        //加载lua 脚本文件
        LuaValue chunk  = globals.loadfile(luaDirectoryFile.getAbsolutePath()+"/hello_lua.lua");
        LogsUtils.iNative("initLua chunk.call()");
        chunk.call();
    }
    private void callLua(String str) {
        LogsUtils.iNative("callLua");
        globals = JsePlatform.standardGlobals();
        //加载lua 脚本文件
        globals.loadfile(luaDirectoryFile.getAbsolutePath() + "/putstring.lua").call();
        LogsUtils.iNative("获取全局函数 analysisData(str)");
        LuaValue analysisData = globals.get(LuaValue.valueOf("analysisData"));
        LogsUtils.iNative("调用并传递参数");
        analysisData.invoke(new LuaValue[]{LuaValue.valueOf(str)});
    }

    private void luaReturn(String str) {
        LogsUtils.iNative("luaReturn");
        globals = JsePlatform.standardGlobals();
        //加载lua 脚本文件                                                          --重点.call()才执行编译
        globals.loadfile(luaDirectoryFile.getAbsolutePath() + "/lua_return.lua").call();
        LogsUtils.iNative("获取全局函数 luaReturn(str)");
        LuaValue luaReturn = globals.get(LuaValue.valueOf("luaReturn"));
        LogsUtils.iNative("调用并传递参数");
        Varargs varargs =  luaReturn.invoke(new LuaValue[]{LuaValue.valueOf(str)});
        LogsUtils.iNative("读取lua 返回数据");
        LuaValue luaValue =  varargs.arg1();
        LogsUtils.iNative("lua return  =%s",luaValue.toString());
    }

方法以此对应下方lua 函数

-- lua 编译测试
print("hello  luaj !!!")

--callLua(String str) 
function analysisData(str)
    print("analysisData")
    print(str)

end

--luaReturn(String str) 

function luaReturn(str)
    print("luaReturn")
    print(str)
return "from lua:"
end

日志输出

I/-------LogsUtilsiNative: callLua
I/-------LogsUtilsiNative: 获取全局函数 analysisData(str)
    调用并传递参数
I/System.out: analysisData
    java call Lua 1551342404549
I/-------LogsUtilsiNative: luaReturn
I/-------LogsUtilsiNative: 获取全局函数 luaReturn(str)
    调用并传递参数
I/System.out: luaReturn
    luaReturn 1551342405700
I/-------LogsUtilsiNative: lua return  =from lua:


future 补充lua 直接调用java 静态方法

你可能感兴趣的:(LUA 桥 LuaJ 使用笔记)