Nashorn Script Engine在Java 8 SE Embedded上为null

时间:2015-01-20 20:47:29

标签: java javascript nashorn

我正试图将JavaScript的功能带到我的机器人平台上,即usjng Java 8的全新Nashorn引擎。这是用于创建Nashorn脚本引擎实例的行:

ScriptEngine nashorn = new ScriptEngineManager().getEngineByName("nashorn");

在我自己的计算机上运行它可以正常工作,但在部署平台上,生成的nashorn对象为null,无论何时使用它都会产生NullPointerException。经过一些调试后,我们知道新的ScriptEngineManager()不是null,但是.getEngineByName()返回引擎;是空的。

这个问题出现在运行Java 8 SE Embedded的FIRST Robotics roboRIO上。

2 个答案:

答案 0 :(得分:3)

他们正在使用compact 2 Java配置文件来创建JRE。您应该创建自己的JRE,其中包括nashorn。

答案 1 :(得分:0)

SE Embedded支持nashorn。

您可以从SE Embedded ejdk1.8.0二进制文件中复制nashorn.jar 到您的jre / lib / ext目录或运行包含在其中的jrecreate.sh工具 嵌入式JDK(ejdk1.8.0)。

这是最新的SE嵌入式下载:

http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html

以下是如何使用jrecreate的示例:

cd ejdk1.8.0_xx / bin sh jrecreate --profile compact2 -x nashorn --dest {target JRE directory}

如果FIRST Robotics包含其他嵌入式扩展,您可以查看 您当前正在运行的JRE顶部的“bom”文件。这包含用于生成JRE的jrecreate命令。

Bob Vandette Java SE Embedded Lead 甲骨文