优秀的编程知识分享平台

网站首页 > 技术文章 正文

Java之在.java文件类中调用js方法

nanyue 2025-02-28 16:46:46 技术文章 5 ℃

此场景,适用于无Html页面,纯后台调式脚本语言。

首先创建一个js文件,放在resource下的静态文件下

//  供java进行调用
function hello(str) {

    var copeStr = str + " 123";

    return copeStr;

}

然后,创建测试类

public class TestJs {

    //  获取js文件的绝对路径
    private static String jsName = "src/main/resources/static/test.js";

    public static void main(String[] args) {

        try {

            //  todo 初始化 JavaScript 引擎
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("javascript");

            engine.eval("load('" + jsName + "');");

            /**
             * 这里我们将 engine 强制转换为 Invocable 类型,使用 invokeFunction 方法将参数传递给脚本引擎。
             * invokeFunction 这个方法使用了可变参数的定义方式,可以一次传递多个参数,并且将脚本语言的返回值作为它的返回值。
             */
            Invocable inv = (Invocable) engine;

            String str = "Hello Js";

            //  将 Java 对象转成 JavaScript 对象
            //Object Java = engine.get("Java");

            //ScriptObjectMirror bytes_som = (ScriptObjectMirror) inv.invokeMethod(Java, "from", str);

            //  进行 js 方法的调用,hello 为 js文件里的方法名
            Object json = inv.invokeFunction("hello",str);

            System.out.printf(json.toString());

        } catch(Exception e) {

            e.printStackTrace();

        }

    }

}

运行测试类,输出:

Hello Js 123

测试成功。

Tags:

最近发表
标签列表