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));
}
}
