java运行脚本

来源:互联网 发布:python 微信报警接口 编辑:程序博客网 时间:2024/06/06 18:08

如何在java利用Rhino引擎中运行脚本?

  1. 基本的执行
        //1.获得引擎脚本        ScriptEngineManager scriptEngine = new ScriptEngineManager();        ScriptEngine javascript = scriptEngine.getEngineByName("javascript");        //2.定义变量,存储到引擎上下文        javascript.put("msg", "hello world");//可以在js里面获取到msg        String str = "var user={name:'chen',age:12};";        str += "print(user.name);";        str += "print(msg)";        //3.执行        javascript.eval(str);//chen -hello world-        javascript.eval("msg='nihao a '");//javascript可以操作        javascript.eval(str);//chen-nihao a        System.out.println(javascript.get("msg"));//java可以操作//nihao a 
  1. 执行函数
//定义函数        javascript.eval("function add(a,b){return a+b;}");        Invocable invocable = (Invocable) javascript;        Object add = invocable.invokeFunction("add", new Object[]{1, 2});        System.out.println(add);//3.0

3.在脚本中导入java包

//String jsCode = "importPackage(java.util); var list=Arrays.asList([\"nihao\",\"hello\"]);";//1.8后不再适用        String jsCode = "var list=java.util.Arrays.asList([\"nihao\",\"hello\"]);";        javascript.eval(jsCode);        List<String> stringList = (List<String>) javascript.get("list");//取值        stringList.forEach(System.out::println);//nihao hello        //更加详细,可以学习Rhino的语法
  1. 读取外部文件
 URL url = RunJavascript.class.getClassLoader().getResource("demo.js");        FileReader fr = new FileReader(url.getPath());        javascript.eval(fr);//invoke js file:7        //关闭流
原创粉丝点击