3
我使用Jython的2.5.3PythonInterpreter
類來評估一些簡單的腳本,但是當我需要進口任何非核心模塊我得到一個異常。我必須在CLASSPATH中添加一些jython庫jar嗎?的Jython ::該模塊可PythonInterpreter以及如何添加更多
演示該問題縮小代碼:
import org.python.core.*;
import org.python.util.PythonInterpreter;
public class JythonTest {
public static void main(String args[]) throws Exception {
String scriptA = "import json"; // "import datetime" fails as well
PythonInterpreter pi = new PythonInterpreter();
PyCode code = pi.compile(scriptA);
PyObject result = pi.eval(code);
}
}
在CLASSPATH運行上面只有Jython的2.5.3.jar失敗,出現以下跡:
[java] ImportError: No module named json
[java]
[java] at org.python.core.Py.ImportError(Py.java:304)
[java] at org.python.core.imp.import_first(imp.java:755)
[java] at org.python.core.imp.import_module_level(imp.java:837)
[java] at org.python.core.imp.importName(imp.java:917)
[java] at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
[java] at org.python.core.PyObject.__call__(PyObject.java:357)
[java] at org.python.core.__builtin__.__import__(__builtin__.java:1173)
[java] at org.python.core.imp.importOne(imp.java:936)
[java] at org.python.pycode._pyx0.f$0(<script>:2)
[java] at org.python.pycode._pyx0.call_function(<script>)
[java] at org.python.core.PyTableCode.call(PyTableCode.java:165)
[java] at org.python.core.PyCode.call(PyCode.java:18)
[java] at org.python.core.Py.runCode(Py.java:1275)
[java] at org.python.core.__builtin__.eval(__builtin__.java:484)
[java] at org.python.core.__builtin__.eval(__builtin__.java:488)
[java] at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:198)
[java] at JythonTest.main(JythonTest.java:10)
我可以證實,在運行時類路徑模塊「日期時間」現在發現獨立的罐子(而以前,它不是)。然而,在運行時類路徑中,'import json'在這兩種情況下(使用jython-standalone-2.5.3.jar或者使用jython-2.5.3.jar)都會產生相同的錯誤。 –
'json'模塊是在Python 2.6中添加的。它在Jython 2.5.3中不可用。你可能想試試Jython 2.7beta1,它包含'json'。請參閱http://www.jython.org/downloads.html。 – mzjn
我剛剛遇到了這個問題。在我的pom.xml中添加了jython-standalone 2.7.0發佈版本。作品! –