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