Вызов Python из Java через скриптовый движок (jython)?

Я пытаюсь вызвать Jython из приложения Java 6 с помощью 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)

Кто-нибудь знает, что я здесь делаю неправильно?

Edit:

Спасибо за ответы! Я добавил jython.jar в путь к классам и работает правильно:

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

Ответ 1

Сначала вы должны зарегистрировать свой движок.

От: ScriptEngineManager.getEngineByName:

[...] сначала ищет ScriptEngineFactory, который был зарегистрирован как дескриптор [...] Возвращает null, если такой factory не найден

В руководстве пользователя чтобы использовать его с JSR-223, вы должны:

По состоянию на Jython 2.5.1 реализация JSR 223 связана с jython.jar. Просто добавьте jython в свой CLASSPATH и попросите python script engine.

Вы уже это сделали?

ИЗМЕНИТЬ О вашем комментарии: Я думаю, вам следует открыть новый вопрос, вы получите лучшие ответы.

Ответ 2

Вам, вероятно, придется зарегистрировать ScriptEngineFactory для'python '