前提条件
jdk≥1.6
运行方法
准备段JS代码, 另存为test.js文件
function test(str){ return '方法执行成功:入参为' + str; }
java代码:
import javax.script.*; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class JsTest { public static void main(String[] args) { try { //创建一个脚本引擎管理器 ScriptEngineManager manager = new ScriptEngineManager(); //获取一个指定的名称的脚本管理器 System.out.println("当前 JDK 支持的脚本语言引擎:"); for (ScriptEngineFactory available : manager.getEngineFactories()) { System.out.println(available.getEngineName()); System.out.println(available.getNames()); } //输出 [nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript] ScriptEngine engine = manager.getEngineByName("ECMAScript"); engine.eval(new FileReader("C:\\Users\\Administrator\\Desktop\\test.js")); //从脚本引擎中返回一个给定接口的实现 Invocable invocable = (Invocable) engine; String aaa = (String)invocable.invokeFunction("test", "测试参数"); System.out.println(aaa ); } catch (ScriptException | NoSuchMethodException | FileNotFoundException e) { e.printStackTrace(); } catch (IOException ioException) { ioException.printStackTrace(); } } }
坑点
new Date(xxx)
方法时,改成这样 new Date(parseInt(xxx))
,先转成int再使用-Dnashorn.args=--language=es6