在做项目中有时候需要用到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);