Java 8 SE Embedded 上的 Nashorn 脚本引擎为空
Nashorn Script Engine is null on Java 8 SE Embedded
我正在尝试将 Java脚本功能引入我的机器人平台,使用 Java 8 的全新 Nashorn 引擎。这是用于创建 Nashorn 脚本引擎实例的行:
ScriptEngine nashorn = new ScriptEngineManager().getEngineByName("nashorn");
运行 这在我自己的电脑上工作正常,但在部署平台上,生成的 nashorn 对象为 null,并且无论何时使用它当然都会给出 NullPointerException。稍加调试后,我们知道 new ScriptEngineManager() 不是 null,而是 .getEngineByName() 返回的引擎;为空。
此问题出现在 FIRST Robotics roboRIO,运行 Java 8 SE Embedded。
他们正在使用 compact 2 Java 配置文件来创建 JRE。您应该创建自己的 JRE,其中包括 nashorn。
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 {目标 JRE 目录}
如果 FIRST Robotics 包含其他嵌入式扩展,您可以查看
您当前正在 运行 的 JRE 顶部的 "bom" 文件。这包含用于生成 JRE 的 jrecreate 命令。
鲍勃·范德特
Java SE 嵌入式潜在客户
甲骨文
我正在尝试将 Java脚本功能引入我的机器人平台,使用 Java 8 的全新 Nashorn 引擎。这是用于创建 Nashorn 脚本引擎实例的行:
ScriptEngine nashorn = new ScriptEngineManager().getEngineByName("nashorn");
运行 这在我自己的电脑上工作正常,但在部署平台上,生成的 nashorn 对象为 null,并且无论何时使用它当然都会给出 NullPointerException。稍加调试后,我们知道 new ScriptEngineManager() 不是 null,而是 .getEngineByName() 返回的引擎;为空。
此问题出现在 FIRST Robotics roboRIO,运行 Java 8 SE Embedded。
他们正在使用 compact 2 Java 配置文件来创建 JRE。您应该创建自己的 JRE,其中包括 nashorn。
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 {目标 JRE 目录}
如果 FIRST Robotics 包含其他嵌入式扩展,您可以查看 您当前正在 运行 的 JRE 顶部的 "bom" 文件。这包含用于生成 JRE 的 jrecreate 命令。
鲍勃·范德特 Java SE 嵌入式潜在客户 甲骨文