Java 未找到RhinoScriptEngineFactory
我无法使用一个主类和Ant1.8.4,使用Oracle JVM的JDK7U10或JDK6U32运行“hello world”rhino程序。我得到这个错误:Java 未找到RhinoScriptEngineFactory,java,rhino,scriptengine,Java,Rhino,Scriptengine,我无法使用一个主类和Ant1.8.4,使用Oracle JVM的JDK7U10或JDK6U32运行“hello world”rhino程序。我得到这个错误: ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.sun.script.javascript.RhinoScriptEngineFactory not found ... [java] Caused by: java.la
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 dir中有rhino提供的js.jar以及可能需要的ant必需包bsf.jar。请帮忙 您可以使用此表单的代码来发现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中提供的版本除外)。我知道这篇文章很旧,但您可以尝试用以下方法初始化ScriptEngineManager:
ScriptEngineManager manager = new ScriptEngineManager(null);