通过脚本引擎(jython)从Java调用Python?

通过脚本引擎(jython)从Java调用Python?,java,python,jython,javax.script,Java,Python,Jython,Javax.script,我试图使用javax.script从Java6应用程序调用Jython: import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class jythonEx { public static void main (String args[]) throws ScriptException {

我试图使用
javax.script
从Java6应用程序调用Jython:

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

你必须先注册你的引擎

发件人::

[…]首先搜索已注册为句柄的ScriptEngineFactory[…]如果未找到此类工厂,则返回null

《用户指南》指出,您必须:

从Jython 2.5.1开始,JSR223的一个实现捆绑在Jython.jar中。只需将jython添加到类路径并请求python脚本引擎

你已经这么做了吗

编辑
关于您的评论:我认为您应该打开一个新问题,您会得到更好的答案。

您可能需要为“python”注册一个ScriptEngineFactory

哪一个是第12行?pyEngine.eval(“”@红毛猩猩:是的,这是第12行。没错。我假设ScriptEngineManager找不到python引擎,但我不知道我做错了什么会导致这样的情况……不,我从来没有这样做过,谢谢!我以前通过javax.script使用过JavaScript,但没有做任何事情,所以我显然错过了这一步。让我现在试试…@griffin好极了!,也许这样就可以了。让我们知道它是否有效,你会吗?@griffin我很高兴!!祝您在python+java集成方面好运;)