美文网首页
Java 中执行js脚本

Java 中执行js脚本

作者: 在简单一点 | 来源:发表于2019-09-29 16:31 被阅读0次

java 脚本相关的api在javax.script中

  1. 直接执行js函数:
    public static void main(String[] args) {
        // 1.实例化 ScriptEngineManager
        ScriptEngineManager manager = new ScriptEngineManager();
        // 2.获取JavaScript引擎实例
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        try {
            // 3.使用eval执行脚本
            engine.eval("function add(a,b){ return a+b; }");

            // 4.检查脚本引擎是否被实现
            if (engine instanceof Invocable) {
                Invocable invocable = (Invocable) engine;
                // 5. 调用JavaScript中的方法并输出
                System.out.println(invocable.invokeFunction("add", 1, 2));
            }
        } catch (ScriptException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }

2.执行js脚本文件

    public static void main(String[] args) {
        // 1.实例化 ScriptEngineManager
        ScriptEngineManager manager = new ScriptEngineManager();
        // 2.获取JavaScript引擎实例
        ScriptEngine engine = manager.getEngineByName("JavaScript");
        try {
            //获取targe路径
            String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
            // 3.加载文件
            engine.eval(new FileReader(path + "fileResource/js/Test.js"));

            // 4.检查脚本引擎是否被实现
            if (engine instanceof Invocable) {
                Invocable invocable = (Invocable) engine;
                // 5. 调用JavaScript中的方法并输出
                System.out.println(invocable.invokeFunction("add", 1, 2));
            }
        } catch (ScriptException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

Test.js

function add(a, b) {
    return a + b;
}

工作中只用到了这么多,所有只写到这,还有很多更强大的功能
比如js实现java接口
将java对象传递到js中
js调用java方法等等

相关文章

网友评论

      本文标题:Java 中执行js脚本

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