在做項目中有時候需要用到Java調用js文件執行相應的方法
在JDK1.6添加了新的ScriptEngine類,允許用戶直接執行js代碼。
import org.junit.Test; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; /** * @author ceshi * @Title: JunitTestJS * @ProjectName ceshi * @Description: java 運行js * @date 2018/7/1016:35 */ public class JunitTestJS { @Test public void test(){ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); try{ engine.eval("function add(a,b){" + "return a+b;" + "}"); if (engine instanceof Invocable) { Invocable in = (Invocable) engine; System.out.println(in.invokeFunction("add",1,1)); } }catch(Exception e){ e.printStackTrace(); } } }
ps: engine.eval()也可以讀入js文件路徑來執行js方法
String jsName = "test.js"; //讀取js FileReader fileReader = new FileReader(jsName ); //執行指定腳本 engine.eval(fileReader);