通过脚本引擎(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集成方面好运;)