首页 > 技术文章 > java----执行脚本语言代码

yanxiaoge 2019-04-24 21:30 原文

脚本引擎介绍

-使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的。
-Java脚本API是连通Java平台和脚本语言的桥梁。
-可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。

脚本引擎执行javascript使用

Rhino是一种使用Java 语言编写的JavaScript 的开源实现,原先由Mozilla开发,现在被集成进JDK 6.0。

1、简单使用

    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ScriptException {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        //实现类是NashornScriptEngine
        ScriptEngine js = scriptEngineManager.getEngineByName("javascript");
        String str = "function add(a,b){return a+b;}";
        js.eval(str);
        Invocable js1 = (Invocable) js;
        Object add = js1.invokeFunction("add", new Object[]{1, 2});
        System.out.println(add);


        String jsCode = "var list=java.util.Arrays.asList(\"a\",\"b\")";
        //String jsCode = "var list=java.util.Arrays.asList([\"a\",\"b\"])";
        js.eval(jsCode);
        List<String> list = (List<String>) js.get("list");
        System.out.println(list);
    }

2、执行js文件脚本

a.js

function test() {
    print("test")
}
test();

 

    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, ScriptException {
        InputStream resourceAsStream = Test1.class.getClassLoader().getResourceAsStream("a.js");
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine js = scriptEngineManager.getEngineByName("javascript");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resourceAsStream));
        js.eval(bufferedReader);
        bufferedReader.close();
    }

  

 

推荐阅读