Nashorn js engine官方文檔
https://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/#top
java函數輸出js的hello world:
import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Maub { public static void main(String args[]) throws ScriptException, NoSuchMethodException{ //引擎管理器 ScriptEngineManager m = new ScriptEngineManager(); //獲取引擎 ScriptEngine engine = m.getEngineByName("JavaScript"); //執行javascript代碼 engine.eval("function hello(name){print('hello '+name)}"); //Javascript實現了invocable調用接口 Invocable inv = (Invocable) engine; //調用函數hello,傳入world inv.invokeFunction("hello","world"); } }
調用文件里的js腳本:
import java.io.FileNotFoundException; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Maub { public static void main(String args[]) throws ScriptException, NoSuchMethodException, FileNotFoundException{//引擎管理器 ScriptEngineManager m = new ScriptEngineManager(); //獲取引擎 ScriptEngine engine = m.getEngineByName("JavaScript"); //執行javascript代碼 engine.eval(new java.io.FileReader("E:\\Code\\Java\\src\\getpwd.js")); Invocable inv = (Invocable) engine; String arg[] = {"MDwwDQYJKoZIhvcNAQEBBQADKwAw","fot123456"}; //使用Invocable調用腳本函數,傳入String參數 System.out.println(inv.invokeFunction("getpwd",arg)); } }