我无法跑步"你好世界"使用Oracle JVM的JDK7U10或JDK6U32的rhino程序,使用主类和ant 1.8.4。我收到了这个错误:
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.sun.script.javascript.RhinoScriptEngineFactory not found
...
[java] Caused by: java.lang.NullPointerException
[java] at com.Test.main(Test.java:14)
我的代码是从文档中复制的,错误发生在engine.eval:
上package com;
import javax.script.*;
public class Test {
public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("print('Hello, World')");
}
}
我在我的lib目录中提供了rhino提供的js.jar以及我可能需要的一个ant所需的包,bsf.jar。请帮忙。
答案 0 :(得分:3)
我知道这篇文章已经过时但您可以尝试使用以下命令初始化ScriptEngineManager:
ScriptEngineManager manager = new ScriptEngineManager(null);
答案 1 :(得分:0)
您可以使用此表单的代码来发现JRE可见的引擎:
for (ScriptEngineFactory sef : new ScriptEngineManager().getEngineFactories()) {
System.out.println(sef);
System.out.append(" Engine: ")
.append(sef.getEngineName())
.append(" ")
.println(sef.getEngineVersion());
System.out.append(" Language: ")
.append(sef.getLanguageName())
.append(" ")
.println(sef.getLanguageVersion());
System.out.append(" Names: ")
.println(sef.getNames());
}
我不认为Rhino会自动显示给JRE的javax.script
API(Oracle JDK中提供的版本除外)。