Yuv*_*val 14 javascript java openjdk rhino javax.script
当我运行以下代码时,engine变量设置为null我使用OpenJDK 7(java-7-openjdk-i386)时.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestRhino {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
try {
System.out.println(engine.eval("1+1"));
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它java-6-openjdk与Oracle的运行良好jre1.7.0.知道为什么吗?
我正在使用Ubuntu 11.10.所有JVM都安装在/usr/lib/jvm.
[更新:这是一个错误,现已修复]
简而言之,这可能是一个错误。
Rhino 支持类 ( com.sun.script.javascript.*) 未编译为rt.jar1(尽管我发现这是 Sun 和 Mozilla 之间的合并问题,而且我知道存在名称空间问题,它们确实存在于 OpenJDK 7 源代码中并在 makefile 中引用) ,并且resources.jar它们也从 中丢失META-INF/services。OpenJDK 6 的情况并非如此,它有以下条目META-INF/services/javax.script.ScriptEngineFactory:
#script engines supported
com.sun.script.javascript.RhinoScriptEngineFactory #javascript
Run Code Online (Sandbox Code Playgroud)
尽管这可能是发行版决定2,但没有书面原因,因此我在 Ubuntu OpenJDK 7 启动板中提交了错误 #982501。一旦我得到答案,就会给出更好的答案。
1 根据此线程,
我曾在某处听说 Mozilla 不接受 Suns 对其主线分支的更改,原因未知,但那是在开源之前。
还存在一些由 JRE 版本与 BYOR(自带 Rhino)版本冲突引起的冲突问题(例如Ubuntu OpenJDK 7 启动板上的 bug #255149)。但是,源位于 OpenJDK 7源中并在makefile中提到,并且上述线程中提到的 BSD 端口具有相同的源。
2 根据 Sun bug #6876736,这是基于发行版的决定:
rhino 源代码不是 OpenJDK 的一部分,由发行版添加它。
与它们签入 OpenJDK Mercurial 的事实有点相反,但我认为这个想法是 Rhino 不在 JDK 规范中。
| 归档时间: |
|
| 查看次数: |
7446 次 |
| 最近记录: |