我在我的应用程序中使用rhino脚本。 我发现在不同的环境中它的工作方式不同。 例如,在open-jdk上,这段代码不起作用
eval("JSON.stringify({id:1})")
而在甲骨文的JDK工作。
这显然是因为每个JDK都包含它自己的Rhino实现。
我在依赖项中添加了以下内容:
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7R4</version>
</dependency>
如何指定使用此实现?
更新:我没有直接调用rhino,而是通过javax.script API调用
new ScriptEngineManager().getEngineByName("JavaScript").eval("JSON.stringify({})")
答案 0 :(得分:0)
您需要使用javax.script.ScriptEngine
的实现,该实现使用包org.mozilla.javascript
,而不是使用重新打包的sun.org.mozilla.javascript.internal
的JDK实现。
de.christophkraemer:rhino-script-engine是一个从OpenJDK源中借用的实现。更多details here。