测试 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();
- }
- }
来源: http://www.bubuko.com/infodetail-3200238.html