我是一个不熟悉jython或python的java人。如果这是一个基本问题,请原谅我的无知。
我正在使用jython 2.5, python 2.5 and jre 1.7
。
间歇性地,jython解释器无法启动,并且抛出了如下错误:
线程中的异常" main" java.lang.ExceptionInInitializerError - 在java.lang.J9VMInternals.initialize(J9VMInternals.java:258) - 在org.python.core.PySystemState.initStaticFields(PySystemState.java:912) - at org.python.core.PySystemState.doInitialize(PySystemState.java:882) - 在org.python.core.PySystemState.initialize(PySystemState.java:800) - at org.python.core.PySystemState.initialize(PySystemState.java:750) - at org.python.core.PySystemState.initialize(PySystemState.java:743) - 在org.python.util.jython.run(jython.java:150) - 在org.python.util.jython.main(jython.java:129) - 引起:java.lang.NullPointerException - at org.python.core.PyObject._cmpeq_unsafe(PyObject.java:1362) - at org.python.core.PyObject._eq(PyObject.java:1456) - at org.python.core.PyObject.equals(PyObject.java:244) - 在java.util.HashMap.put(HashMap.java:475) - 在java.util.HashSet.add(HashSet.java:217) - at org.python.core.PyType.fromClass(PyType.java:1317) - 在org.python.core.PyType.fromClass(PyType.java:1275) - 在org.python.core.PyEllipsis。(PyEllipsis.java:14) - 在java.lang.J9VMInternals.initializeImpl(Native方法) - 在java.lang.J9VMInternals.initialize(J9VMInternals.java:236) - ... 7更多
我确实在网上搜索,但是我找不到任何有用的信息。
如果有人解决了这个问题,请分享。
由于 阿育王
答案 0 :(得分:0)
要做的第一件事是阅读例外。
大约有七行,您的例外情况为“引起:java.lang.NullPointerException
”。我会专注于那个。 null
来自哪里?
另请注意,您的堆栈跟踪最后会丢失一些行,其中显示“... 7 more”。这使得很难读取异常,因为我们不知道缺少的行是什么。看看你是否能找到一种方法来显示缺失的行,以防它们有用。
答案 1 :(得分:0)
这是一个更新。我们发现这是由于jython的jython初始化错误。我们的内部专家发现了这一点。
PySystemState initStaticFields和initBuildins在Py.False和Py.True初始化之前初始化PyTypes。间歇性地导致由于PyObject._cmpeq_unsafe中的NullPointer异常而引发ExceptionInInitializerError。
问题的根本原因是PyType.fromClass将所有类型存储在HashSet的exposedTypes中。如果在初始化期间两个PyTypes最终具有相同的hashCode,则HashSet使用方法equals。 PyObject.equals调用的一些方法返回Py.True / Py.False(参见PyObject._is),它们没有被初始化为第一个PyTypes ......
我们在AIX系统上看到了这个错误,并且每天都有一个生成+10000 Jython的应用程序。
有关此错误的更多信息http://bugs.jython.org/issue2163
解决方案:一个修复方法是确保PyTrue和PyFalse在PyType初始化时正确初始化。重建了jython.jar