从Nashorn转换到Rhino(Gradle)

我正在使用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可用于我的应用程序?

基于Rhino的jsr223引擎不再装有jdk8 +。 但是,您可以按照这里记录的步骤来获取jdk8 +上的Rhino引擎 – > https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8

这就是说,我们想知道为什么nashorn不能使用! 请提交错误报告或发送问题报告给nashorn-dev openjdk别名。

与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");