

下面是一个具体的demo测试脚本引擎,执行javas文件、
package Rhino;
 
import java.io.FileReader;
import java.net.URL;import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;/*
 * 测试脚本引擎
 */
public class Demo01 {
public static void main(String[] args) throws Exception {
    //获得脚本引擎对象
    ScriptEngineManager sem=new ScriptEngineManager();
    ScriptEngine  engine=sem.getEngineByName("javascript");
    //定义变量,存储到引擎上下文里面
    engine.put("msg", "tom is a boy");
    String str="var user= {name:'liulei',age:18,schools:['清华','北大']};";
    str += "print(user.name);";
    //执行脚本
    engine.eval(str);
    engine.eval("msg='sxt is a good school';");
    System.out.println(engine.get("msg"));
    //定义函数
    engine.eval("function add(a,b){var sum=a + b; return  sum;}");
    //取得调用接口
     Invocable invocable=(Invocable) engine;
     //执行脚本里面的方法
     Object  result=invocable.invokeFunction("add", new Object[]{13,30});
     System.out.println(result);
//     //导入其他java 包,使用其他包中的java类
//   String jsCode= "importPackage(java.util); var list=Arrays.asList([\"北京\",\"上海\"]);";
//     engine.eval(jsCode);
//     List<String> list2=(List<String>)engine.get("list");
//     for(String temp:list2) {
//       System.out.println(temp);
//     }
     //执行一个js文件(我们将a.js至于项目的src下即可)
     URL url=Demo01.class.getClassLoader().getResource("a.js");
      FileReader fr=new FileReader(url.getPath());
     engine.eval(fr);
     fr.close();
}
}总之java也可以执行其他的语言,只需要查阅相应的api就行
作者:你的雷哥
本文版权归作者所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。










