我使用Java 8和Kotlin,我项目中的一个库(http://michel-kraemer.github.io/citeproc-java/)拒绝在与Java 8捆绑的Nashorn JavaScript解释器上运行。解决方案是使用Rhino JavaScript解释器代替。
我使用Gradle构建我的项目。我已经将Rhino添加到我的依赖项中,但是该库仍然坚持使用Nashorn。
compile 'org.mozilla:rhino:1.7.7.1'
此外,以下代码产生NullPointerException:
val m = ScriptEngineManager()
// specifically look for "rhino" engine
val engine = m.getEngineByName("rhino")
所以看起来Rhino不在任何地方的类路径上。如何确保我的应用程序可以使用Rhino?
答案 0 :(得分:2)
基于Rhino的jsr223引擎不再随jdk8 +一起提供。但是,您可以按照此处记录的步骤在jdk8 +上获取Rhino引擎 - > https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8
那就是说,我们想知道为什么不能使用nashorn!请提交错误或将问题报告发送到nashorn-dev openjdk别名。
答案 1 :(得分:0)
除了Rhino引擎,您还需要JSR-233桥接器(因为它不再是JDK)。您可以使用以下maven依赖项:
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7.7.1</version>
</dependency>
<dependency>
<groupId>cat.inspiracio</groupId>
<artifactId>rhino-js-engine</artifactId>
<version>1.7.7.1</version>
</dependency>
然后你只需要调用正确的脚本引擎:
new ScriptEngineManager().getEngineByName("rhino");