我试图使用
javax.script从
Java 6应用程序调用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
解决方法
你必须先注册你的引擎.
从:ScriptEngineManager.getEngineByName:
[…] first searches for a ScriptEngineFactory that has been registered as a handle […] Returns null if no such factory was found
用户指南说to use it with JSR-223你必须:
As of Jython 2.5.1 an implementation of JSR 223 is bundled in jython.jar. Simply add jython to your CLASSPATH and ask for the python script engine.
你有没有这样做?
编辑关于你的评论:我想你应该开一个新问题,你会得到更好的答案.