美文网首页
LUA 桥 LuaJ 使用笔记

LUA 桥 LuaJ 使用笔记

作者: 橘子周二 | 来源:发表于2019-02-28 17:25 被阅读0次
  • 开干前的准备
    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:


相关文章

  • LUA 桥 LuaJ 使用笔记

    开干前的准备1.安装lua插件 Intellij 系列 推荐emmylua mac 只有 lua 2.下载LuaJ...

  • Java调用lua脚本-LuaJ

    版权说明:本文由博主原创,转载请注明出处,多谢-转角的咖啡店 LuaJ介绍 Luaj 是一个 Java 的 Lua...

  • 在JVM中运行LuaVM

    目前已有 luaj 项目可在JVM中执行Lua脚本,由于其编译效率和执行效率不如 luac ,所以开发了这个接口和...

  • OpenResty安装和redis的访问

    OpenResty 是一个nginx和它的各种三方模块的一个打包而成的软件平台。最重要的一点是它将lua/luaj...

  • lua入门笔记1 类型 表达式 语句 函数

    从0开始学lua,给自己记一个笔记,使用书籍 lua程序设计(第二版),电子工业大学出版社 lua的中文API) ...

  • coolshell lua教程笔记

    collshell lua教程笔记 标签(空格分隔): lua todo 变量 数字 lua的数字只有double...

  • lua脚本

    lua脚本 执行方法下载lua 打开cmd 或者命令界面 执行lua使用lua 文件

  • lua入门笔记 目录

    lua的中文API lua入门笔记1 类型 表达式 语句 函数lua入门笔记2 深入函数 深入函数 迭代器与泛型f...

  • 在spring-data-redis中使用lua脚本

    参考 Lua 脚本Programming in Lua api 使用 RedisScript 使用 Redi...

  • Lua扩展

    lua作为配置文件使用 使用LUA API分析这个文件,并获取width和height table操作lua 5....

网友评论

      本文标题:LUA 桥 LuaJ 使用笔记

      本文链接:https://www.haomeiwen.com/subject/yljkuqtx.html