测试js脚本引擎

public class helloworld {public static void main(String[] args) throws Exception { //获得脚本引擎对象 ScriptEngineManager sem=new ScriptEngineManager(); ScriptEngine engine=sem.getEngineByName("javascript"); //定义变量,会存储到引擎上下文种,java和js都能取到 engine.put("msg","good man"); String str="var user= {name:'我',age:18,schools:['高中','大学']};"; str+="print(user.name);"; //执行脚本 engine.eval(str); //js代码修改 engine.eval("msg = 'i am a good man';"); //java获取值 System.out.println(engine.get("msg")); //定义js函数 engine.eval("function add(a,b){var sum=a+b;return sum;}"); //执行js函数 //取得调用接口 Invocable jsInvoke =(Invocable)engine; //Invocable是ScriptEngine的一个接口,调用函数需要强转 //执行js函数 Object result1=jsInvoke.invokeFunction("add", new Object[]{113,20}); System.out.println(result1); //导入其他java包,使用其他包种的java类 String jsCode=" var list=java.util.Arrays.asList([\"小学\",\"大学\"]);"; engine.eval(jsCode); List<String> list2=(List<String>)engine.get("list"); for(String temp:list2) { System.out.println(temp); } //执行一个js文件(置于src下即可) URL url=helloworld.class.getClassLoader().getResource("nn.js"); //类加载器,返回url FileReader fr=new FileReader(url.getPath()); engine.eval(fr); fr.close(); }}