0

我在我的应用程序中使用 rhino 脚本。我发现在不同的环境下它的工作方式不同。例如,在 open-jdk 上,此代码不起作用

eval("JSON.stringify({id:1})")

而在 Oracle 的 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({})")
4

1 回答 1

0

你需要一个javax.script.ScriptEnginewhich uses which uses the packageorg.mozilla.javascript的实现,而不是 JDK 的实现,它使用 repackaged sun.org.mozilla.javascript.internal

de.christophkraemer:rhino-script-engine就是这样一个实现,借用自 OpenJDK 源代码。更多细节在这里

于 2015-03-06T15:55:44.053 回答