我正试图将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上。
答案 0 :(得分:3)
他们正在使用compact 2 Java配置文件来创建JRE。您应该创建自己的JRE,其中包括nashorn。
答案 1 :(得分:0)
您可以从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 甲骨文