我有一个使用ScriptEngine处理一些javascript的项目,并且在我的机器上运行良好,但是当我将项目的jar发送到服务器时,我发现服务器的JVM没有内置的Rhino,当代码调用
new ScriptEngineManager().getEngineByName("javascript");我访问了犀牛的下载页面,获得了最新版本,并从中提取了js.jar,在项目中添加了jar,但仍然存在相同的问题。
发布于 2011-01-10 17:58:17
JavaScript引擎仅包含在Sun/Oracle中。如果您使用其他一些Java实现,如IBM J9或Oracle (很可能在服务器上使用),或者如果您不使用Sun/Oracle,而是使用Sun/Oracle (更可能是在服务器上),那么您将无法获得JavaScript引擎。
您需要使用Sun的完整JDK。
还要注意的是,JavaScript引擎附带的JDK6并不是Rhino,它是Rhino几年前过时版本的一个被剥离的循环化版本。特别是,它缺少编译器,这意味着性能可能会很差。
还请注意,API不一定兼容于Rhino和JDK6 JavaScript引擎,即使您设法找到它所基于的过时的Rhino版本。因此,如果您想在部署中使用Rhino,最好也在开发中使用它。
最后但并非最不重要的一点是:仅仅因为您在Eclipse项目文件中输入了一些条目,并不意味着服务器的类路径会神奇地改变。您需要确保所有的类路径都已正确设置。我对FreeBSD没有任何经验,但我很确定包管理系统(在本例中是FreeBSD端口)至少会在port install rhino之后部分处理这个问题。
https://stackoverflow.com/questions/4649519
复制相似问题