java调用Rhino(javascript)
·
package com.dasenlin.baidu;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* 用java代码编写javascript
* @author Administrator
*
*/
public class JavaScriptRhino {
/**
* @param args
*/
public static void main(String[] args) {
//获取脚本引擎对象
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine =sem.getEngineByName("javascript");
//定义变量,存储到引擎上下文中。
engine.put("msg", "you are a good man!");
String str ="var user ={name:'gaoqi',age:18,school:['清华大学','北京尚学堂']};";
str +="println(user.name);";
//执行脚本
try {
engine.eval(str);
engine.eval("msg ='xiaoming is a diaosi man';");
System.out.println(engine.get("msg"));
} catch (ScriptException e) {
e.printStackTrace();
}
try {
//定义函数
engine.eval("function add(a,b){var sum =a+b;return sum;}");
//取得调用接口
Invocable jsInvoke =(Invocable)engine;
Object result1 =jsInvoke.invokeFunction("add", new Object[]{13,20});
System.out.println(result1);
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
//导入其他java的包,使用其他包中的java类
try {
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);
}
} catch (ScriptException e) {
e.printStackTrace();
}
//执行一个src下的a.js文件
try {
URL url=JavaScriptRhino.class.getClassLoader().getResource("a.js");
FileReader fr=new FileReader(url.getPath());
engine.eval(fr);
fr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ScriptException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)