java 腳本引擎執行js


為用到時,使用方便直接保存一下代碼

 

 1 package com.xzlf.reflectTest;
 2 
 3 import java.io.BufferedReader;
 4 import java.io.FileInputStream;
 5 import java.io.InputStreamReader;
 6 import java.io.Reader;
 7 import java.util.List;
 8 
 9 import javax.script.Invocable;
10 import javax.script.ScriptEngine;
11 import javax.script.ScriptEngineManager;
12 
13 /**
14  * java 中的腳本引擎
15  * @author xzlf
16  *
17  */
18 public class Demo05 {
19     public static void main(String[] args) throws Exception {
20         // 獲取腳本引擎對象
21         ScriptEngineManager manager = new ScriptEngineManager();
22         ScriptEngine engine = manager.getEngineByName("javascript");
23         // 定義變量
24         engine.put("msg", "Hello World!");
25         String str = "var user = {name:'張三', age:18};";
26         str += "print(user.name);";
27         // 執行腳本
28         engine.eval(str);
29         engine.eval("msg='Hello Java'");
30         System.out.println(engine.get("msg"));
31         
32         // 定義函數
33         engine.eval("function add(a, b){ return a +b;}");
34         // 取得調用接口
35         Invocable jsInvocable = (Invocable) engine;
36         // 執行腳本中定義的方法 
37         Object result = jsInvocable.invokeFunction("add", 11, 12);
38         System.out.println(result);
39         
40         // 導入java包,使用其他包中的java類
41         String jsCode = "var list = java.util.Arrays.asList([\"Java\", \"Html\", \"MySQL\"])";
42         engine.eval(jsCode);
43         List<String> list = (List<String>) engine.get("list");
44         for (String string : list) {
45             System.out.println(string);
46         }
47         
48         // 執行js 文件(js文件放在src下)
49         Reader reader = new BufferedReader(
50                 new InputStreamReader(new FileInputStream("src/test.js")));
51         engine.eval(reader);
52         reader.close();
53     }
54 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM