risc-v中文社区

 找回密码
 立即注册
查看: 1107|回复: 0

[原创] java中使用lua脚本

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2022-6-20 16:43:33 | 显示全部楼层 |阅读模式
第一步:
windows下,先下载安装lua(其他操作系统自行百度,我只说主要基本的流程)
下载地址
我选了lua-5.3.4_Win64_bin.zip为例

第二步:
解压到D盘根路径的lua文件夹中
配置环境变量,增加D:\lua;

第三步:
java项目中引入luaj
git项目为例:

                <dependency>
            <groupId>org.luaj</groupId>
            <artifactId>luaj-jse</artifactId>
            <version>3.0.1</version>
        </dependency>

第四步
java调用lua分两种情况:

第一种情况,简单的lua脚本,直接用java字符串写:

public static void main(String[] args) {
        String luaStr = "print 'hello world'";
        Globals globals = JsePlatform.standardGlobals();
        LuaValue chunk = globals.load(luaStr);
        chunk.call();
}

执行结果如下:

hello world

第二种情况,java中调用lua文件:
创建lua文件:testtest.lua

--无参方法
function test1()
print '调用lua文件无参方法的返回值'
end

--带参方法
function test2(str)
return '调用lua文件有参方法的返回值'
end

java中调用:

public static void main(String[] args) {
        String luaPath = "testtest.lua的路径";
        Globals globals = JsePlatform.standardGlobals();
        globals.load(new InputStreamReader(new FileInputStream(new File(luaPath))), "chunkname").call();
        LuaValue func = globals.get(LuaValue.valueOf("test1"));
        func.call();

        LuaValue func1 = globals.get(LuaValue.valueOf("test2"));
        String data = func1.call(LuaValue.valueOf("java入参")).toString();
        System.out.println("lua文件返回值:" + data);
    }

执行结果如下:

调用lua文件无参方法的返回值
lua文件返回值:调用lua文件有参方法的返回值
————————————————
版权声明:本文为CSDN博主「zhangSir134」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/java_zhangshuai/article/details/102414640

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-5-4 07:16 , Processed in 0.020418 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表