10

以下を使用してJava 6アプリケーションからJythonを呼び出そうとしていますjavax.script:

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class jythonEx
{
    public static void main (String args[]) throws ScriptException
    {
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine pyEngine = mgr.getEngineByName("python");
        try {
            pyEngine.eval("print \"Python - Hello, world!\"");
        } catch (Exception ex) {
            ex.printStackTrace();
        }       
    }
}

これにより、NullPointerException が発生します。

java.lang.NullPointerException
        at jythonEx.main(jythonEx.java:12)

ここで私が間違っていることを知っている人はいますか?

編集:

回答ありがとうございます。jython.jar をクラスパスに追加したところ、正しく実行されました。

java -cp "./;jython.jar" jythonEx
4

2 に答える 2

15

最初にエンジンを登録する必要があります。

From: ScriptEngineManager.getEngineByName :

[...] 最初にハンドルとして登録されている ScriptEngineFactory を検索します [...] そのようなファクトリが見つからない場合は null を返します

ユーザー ガイドでは、JSR-223 で使用するには次のことを行う必要があります。

Jython 2.5.1 の時点で、JSR 223 の実装が jython.jar にバンドルされています。jython を CLASSPATH に追加して、python スクリプト エンジンを要求するだけです。

あなたはすでにそれをしましたか?

編集 コメントについて: 新しい質問を開く必要があると思います。より良い回答が得られます。

于 2010-04-20T00:31:53.893 に答える
2

おそらく「python」の ScriptEngineFactory を登録する必要があります

于 2010-04-20T00:34:19.380 に答える