当前位置: 首页 > 知识库问答 >
问题:

Nashorn脚本引擎在Java 8 SE Embedded上为空

杜苏燕
2023-03-14

我正试图使用Java8的全新Nashorn引擎,将JavaScript功能带到我的机器人平台上。以下是用于创建Nashorn脚本引擎实例的行:

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

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

这个问题发生在第一台运行Java8SE嵌入式的机器人roboRIO上。

共有2个答案

赵永新
2023-03-14

nashorn在SE Embedded中受支持。

你可以复制nashorn。来自SE嵌入式ejdk1的jar。将8.0二进制文件保存到jre/lib/ext目录或运行jrecreate。嵌入式JDK(ejdk1.8.0)中包含的sh工具。

以下是最新的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 VandetteJavaSE嵌入式铅Oracle

陆臻
2023-03-14

他们正在使用compact 2 Java概要文件创建JRE。你应该创建自己的JRE,包括nashorn。

 类似资料:
  • 通过Java的Nashorn脚本引擎,我可以使用如下绑定在eval()的上下文中提供对象: 我希望通过提供一个默认对象来简化javascript,这样javascript就不是: 我可以写: 有没有办法做到这一点?(someMethod是对象上的方法,而不是静态方法)

  • 我们想在servlet中使用Nashorn。这个想法是使用ScriptEngine的单例实例,该实例在每次请求时都被重用。在每次请求时都会创建一个新的Engineering Scope绑定,并使用该绑定运行评估。然后清除绑定。没有共享对象被传递给绑定(只有servlet中的请求/响应对象)。 在servlet中,ScriptEngine的单例实例可能会在不同的线程中同时评估,这会正常工作还是会遇到

  • 一个非常小的script脚本引擎,可以同时在j2me / j2se / c++ platform上面运行 它的目标是使用这个脚本引擎便于开发一个更加灵活的j2me 游戏这个脚本有点像BASIC这东西不错,是一个开源的脚本引擎,大家可以学习里面的思想里面其中带了一个例子,是3子棋。感觉挺不错的。这东西在SF也挺活跃的。

  • 我必须把一个项目从Java8转移到Java17。 我可以解决大多数问题,但它包含一种方法,我使用ScriptEngineManager来计算一个数学术语。 在Java8中,它可以根据需要工作,但在Java17中始终为空。 根据谷歌的说法,Java17不再支持JavaScript引擎。 由于项目限制,我不允许使用第三方库。 在Java17中有没有合适的方法来处理这个问题?

  • 我正在尝试使用新的Java 8 Nashorn javascript引擎运行javascript脚本,但失败,出现以下错误: 脚本使用应在全局作用域中定义的readfull函数,nashorn在启用脚本模式的情况下运行(如图所示,在通过脚本引擎运行时,默认为启用脚本模式)http://mail.openjdk.java.net/pipermail/nashorn-dev/2013-December

  • 是否可以从nashorn引擎中隐藏或删除java api?所以它只能看到或使用“默认”ECMAScript 262版本5.1,以及一些特别公开的函数/变量? 我想让我的最终用户为自己创建一些特定的逻辑,而不用担心他们会入侵整个系统。当然,nashorn引擎中可能存在一些安全漏洞等,但这是不同的主题。 编辑:很抱歉,我忘了提到我正在java应用程序中运行nashorn,所以不能使用命令行参数。