Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到RhinoScriptEngineFactory_Java_Rhino_Scriptengine - Fatal编程技术网

Java 未找到RhinoScriptEngineFactory

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

我无法使用一个主类和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.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);