1

メインクラスと ant 1.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 ディレクトリに rhino が提供する js.jar と、必要になる可能性のある ant 必須パッケージ bsf.jar があります。助けてください。

4

2 に答える 2

3

この投稿が古いことは承知していますが、ScriptEngineManager の初期化を試すことができます:

ScriptEngineManager manager = new ScriptEngineManager(null);
于 2015-06-04T12:31:42.260 に答える
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 の API に自動的に表示されるとは思わないjavax.script(Oracle の JDK で出荷されたバージョンを除く)。

于 2013-01-17T15:26:38.277 に答える