9

无法获得 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 运行时环境 (build 1.8.0_20-ea-b23)

4

4 回答 4

19

当我将空参数传递给 ScriptEngineManager 构造函数时,它的工作原理:

ScriptEngine engine = new ScriptEngineManager(null).getEngineByName("nashorn");
engine.eval("print('Hello World!');");

来自 java 文档

ScriptEngineManager(类加载器加载器)

如果 loader 为 null,则加载与平台捆绑并位于常用扩展目录(已安装的扩展)中的脚本引擎工厂。

于 2014-08-15T19:22:40.673 回答
4

老问题,但如果你没有任何快乐......你可以试试这个......

ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine();
于 2015-06-03T16:46:08.723 回答
1

Nashorn 是 Oracle 库,所以如果您没有 Oracle Java,那么您应该手动导入它。

如何使用 Nashorn

于 2014-08-15T19:14:07.037 回答
0

此代码是正确的,并且适用于 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/

于 2015-12-22T10:38:11.070 回答