【问题标题】:Nashorn Script Engine is null on Java 8 SE EmbeddedNashorn 脚本引擎在 Java 8 SE Embedded 上为空
【发布时间】:2015-01-20 20:47:28
【问题描述】:

我正在尝试将 JavaScript 功能引入我的机器人平台,使用 Java 8 的全新 Nashorn 引擎。这是用于创建 Nashorn 脚本引擎实例的行:

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

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

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

【问题讨论】:

    标签: java javascript nashorn


    【解决方案1】:

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

    【讨论】:

    • 虽然不支持,但应该可以将 nashorn.jar 的一个版本(从 SE)复制到嵌入式设备上的 lib/ext/ 目录中。
    【解决方案2】:

    SE Embedded 支持 nashorn。

    您可以从 SE Embedded ejdk1.8.0 二进制文件中复制 nashorn.jar 到您的 jre/lib/ext 目录或运行包含在 嵌入式 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 嵌入式主管 甲骨文

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 2015-01-17
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 2017-07-09
      • 1970-01-01
      • 2019-07-14
      相关资源
      最近更新 更多