通过脚本引擎(jython)从Java调用Python?
我正在尝试在一个Java 6的应用程序中使用 javax.script
来调用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
2 个回答
2
你可能需要为'python'注册一个脚本引擎工厂。
15
你需要先注册你的引擎。
来自:ScriptEngineManager.getEngineByName:
[...] 首先会寻找一个已经注册的 ScriptEngineFactory [...] 如果没有找到这样的工厂,就会返回 null
用户指南提到,要和 JSR-223 一起使用,你需要:
从 Jython 2.5.1 开始,JSR 223 的实现已经包含在 jython.jar 中。只需将 jython 添加到你的 CLASSPATH 中,然后请求 Python 脚本引擎。
你已经这样做了吗?
编辑 关于你的评论:我觉得你应该开一个新问题,这样能得到更好的答案。