java - JVM 缺少 Rhino

标签 java rhino scriptengine

我有一个项目使用 ScriptEngine 来处理一些 javascript,并且在我的机器上运行良好,但是当我将项目的 jar 发送到服务器时,我发现服务器的 JVM 没有内置 Rhino,当代码调用

时返回 null
new ScriptEngineManager().getEngineByName("javascript");

我去犀牛的下载页面,获取最新版本,并从中提取js.jar,将jar添加到项目中,但仍然有同样的问题。

最佳答案

JavaScript 引擎仅包含在 Sun/Oracle JDK 中。如果您使用其他一些 Java 实现,如 IBM J9 或 Oracle JRockit(很可能在服务器上),或者如果您不使用 Sun/Oracle JDK,而是使用 Sun/Oracle JRE(更可能在服务器上),那么您不要获取 JavaScript 引擎。

您需要使用 Sun 的完整 JDK。

另请注意,JDK6 附带的 JavaScript 引擎不是 Rhino,它是 Rhino 几年前的过时版本的精简版。特别是,它缺少编译器,这意味着性能可能会很糟糕。

另请注意,Rhino 和 JDK6 JavaScript 引擎之间的 API 不一定兼容,即使您设法找到它所基于的 Rhino 的过时版本。所以,如果你想在部署中使用 Rhino,你最好在开发中也使用它。

最后但同样重要的是:仅仅因为您在 Eclipse 项目文件中进行了一些输入,并不意味着您的服务器的类路径会神奇地改变。您需要确保所有类路径都已正确设置。我对 FreeBSD 没有任何经验,但我很确定包管理系统(在这种情况下是 FreeBSD 端口)在 port install rhino 之后至少会部分处理这个问题.

关于java - JVM 缺少 Rhino,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4649519/

相关文章:

java - weka中朴素贝叶斯的概率分布

java - 如何更新自定义 JPanel?

javascript - 在 Javascript Rhino 中读取文本文件

javascript - 从 Java 实例变量存储 Javascript 函数

java - 使用 Java 1.7 处理 Rhino 代码并使用 Java 1.8 生成异常

java - 我如何重用 ScriptContext(或以其他方式提高性能)?

java - 代码块在 Android Studio 中无法运行,但在 Eclipse 中运行良好?

java - Java 与 C++ 中的构建器?

javascript - 如何调用 Nashorn CompiledScript 中的方法?