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

gri*_*fin 10 python java jython javax.script

我正在尝试使用以下命令从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();
        }       
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致NullPointerException:

java.lang.NullPointerException
        at jythonEx.main(jythonEx.java:12)
Run Code Online (Sandbox Code Playgroud)

有谁知道我在这里做错了什么?

编辑:

谢谢你的回复!我将jython.jar添加到类路径中并且运行正常:

java -cp "./;jython.jar" jythonEx
Run Code Online (Sandbox Code Playgroud)

Osc*_*Ryz 15

您必须先注册您的引擎.

来自:ScriptEngineManager.getEngineByName:

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

用户指南说要与JSR-223一起使用,你必须:

从Jython 2.5.1开始,JSR 223的实现捆绑在jython.jar中.只需将jython添加到您的CLASSPATH并请求python脚本引擎.

你已经这样做了吗?

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