Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何指定确切的rhino实现而不是嵌入JDK的实现?_Java_Rhino_Javax.script - Fatal编程技术网

Java 如何指定确切的rhino实现而不是嵌入JDK的实现?

Java 如何指定确切的rhino实现而不是嵌入JDK的实现?,java,rhino,javax.script,Java,Rhino,Javax.script,我在应用程序中使用rhino脚本。 我发现在不同的环境下,它的工作原理是不同的。 例如,在OpenJDK上,此代码不起作用 eval("JSON.stringify({id:1})") 而在Oracle的JDK上是有效的 这显然是因为每个JDK都包含自己的Rhino实现 我向依赖项添加了以下内容: <dependency> <groupId>org.mozilla</groupId> <artifactId>rhino</a

我在应用程序中使用rhino脚本。 我发现在不同的环境下,它的工作原理是不同的。 例如,在OpenJDK上,此代码不起作用

eval("JSON.stringify({id:1})")
而在Oracle的JDK上是有效的

这显然是因为每个JDK都包含自己的Rhino实现

我向依赖项添加了以下内容:

<dependency>
    <groupId>org.mozilla</groupId>
    <artifactId>rhino</artifactId>
    <version>1.7R4</version>
</dependency>

您需要一个
javax.script.ScriptEngine
的实现,它使用包
org.mozilla.javascript
,而不是JDK的实现,后者使用重新打包的
sun.org.mozilla.javascript.internal


就是这样一个实现,从OpenJDK源代码借用而来。更多。

什么是“简单JDK”?从Oracle网站下载的JDK。啊,那么Oracle JDK。那么,您是否正在考虑将rhino实现与应用程序打包在一起?你有没有看过一些关于它的帖子,比如?如果你试图遵循它,你的确切问题是什么?也许你在谈论不同版本的犀牛?Rhino是“实现”,只有一个。但是当然有不同的版本,而且可能每个版本中可用的Javascript api都不同。JDK自述文件实际上准确地解释了如何为您处理此问题:。以防链接损坏:捆绑Rhino的软件包已经更改,因此您只需使用正确的Rhino原始软件包就可以使用更高版本。我明白了什么是令人困惑的。我尝试不直接调用rhino,而是通过javax.scriptAPI调用rhino。
new ScriptEngineManager().getEngineByName("JavaScript").eval("JSON.stringify({})")