Java 中执行js脚本

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基础部分.................................................
    wy_sure阅读 3,870评论 0 11
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,721评论 1 114
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,736评论 0 3
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,426评论 0 3
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,194评论 1 0