Вызов 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

2 ответов


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

From:вызов scriptenginemanager.getEngineByName:

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

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

по состоянию на Jython 2.5.1 в комплекте идет реализация JSR 223 в языка Jython.сосуд. Просто добавьте jython в свой путь к классам и попросите движок скриптов python.

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

редактировать О вашем комментарии: я думаю, вы должны открыть новый вопрос, вы получите лучшие ответы.


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