getEngineByName(“nashorn”)返回null
无法获得Nashorn引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("print('Hello World!');");
engine
返回null
我正在使用eclipse,jdk1.8.0_11
java -version
java版“1.8.0_20-ea”
Java(TM)SE运行时环境(版本1.8.0_20-ea-b23)
当我将null参数传递给ScriptEngineManager构造函数时,它正在工作:
ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("nashorn"); engine.eval("print('Hello World!');");
来自java文档
ScriptEngineManager(ClassLoader加载器)
如果loader为null,则加载与平台捆绑在一起且位于通常扩展目录(已安装的扩展)中的脚本引擎工厂。
老问题,但万一你没有任何喜悦……你可以试试这个……
ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine();
Nashorn是Oracle库,因此如果您没有Oracle Java,那么您应该手动导入它。
如何利用Nashorn
此代码是正确的,可在Oracle JDK和OpenJDK上运行。
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
您应该使用JDK 8的最新版本(您使用的“ea”版本现已过时且可能有错误)。
Nashorn的官方文档在这里: http : //docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/intro.html#sthref14
Nashorn是一个在这里举办的OpenJDK项目: http : //openjdk.java.net/projects/nashorn/