Jython投掷java.lang.ExceptionInInitializerError间歇性

2024-10-01 07:51:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个不精通jython或python的java人。如果这是一个基本问题,请原谅我的无知。在

我正在使用jython 2.5, python 2.5 and jre 1.7。在

jython解释器间歇性地无法启动,并抛出如下错误:

Exception in thread "main" java.lang.ExceptionInInitializerError - at java.lang.J9VMInternals.initialize(J9VMInternals.java:258) - at org.python.core.PySystemState.initStaticFields(PySystemState.java:912) - at org.python.core.PySystemState.doInitialize(PySystemState.java:882) - at 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) - at org.python.util.jython.run(jython.java:150) - at org.python.util.jython.main(jython.java:129) - Caused by: 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) - at java.util.HashMap.put(HashMap.java:475) - at java.util.HashSet.add(HashSet.java:217) - at org.python.core.PyType.fromClass(PyType.java:1317) - at org.python.core.PyType.fromClass(PyType.java:1275) - at org.python.core.PyEllipsis.(PyEllipsis.java:14) - at java.lang.J9VMInternals.initializeImpl(Native Method) - at java.lang.J9VMInternals.initialize(J9VMInternals.java:236) - ... 7 more

我确实在网上搜索过,但没有找到任何有用的信息。在

如果你们中有人解决了这个问题,请分享。在

谢谢 阿育王


Tags: orgcorelangmainutiljythonjavaat
2条回答

首先要做的是读取异常。在

在大约七行中,异常显示“由:java.lang.NullPointerException引起”。我会专注于此。null来自哪里?在

还请注意,堆栈跟踪在结尾处缺少一些行,其中显示“。。。还有7个”。这使得我们很难读懂异常,因为我们不知道缺失的行说明了什么。看看能不能找到一种方法来显示缺失的行,以防它们有用。在

这是最新消息。我们发现这是由于jython的jython初始化错误造成的。我们的内部专家发现了这个。在

PySystemState initStaticFields和initBuildins在初始化PyTypes之前对。错以及是的。没错初始化。由于PyObject中的Null指针异常,这会间歇性地引发ExceptionInInitializerError。\ u cmpeq_unsafe。在

问题的根本原因是PyType.fromClass将所有类型存储在HashSet exposedTypes中。如果在初始化期间,两个pytype最终具有相同的hashCode,那么HashSet将使用equals方法。调用的某些方法PyObject.equals公司返回Py.True/Py.False(请参阅PyObject.\u is)未初始化为第一个PyTypes。。。在

我们只在AIX系统和每天生成+10000个Jython运行的应用程序上看到这个错误。在

有关此错误的更多信息http://bugs.jython.org/issue2163

在解决方案:一次修复将确保PyTrue和PyFalse在PyType初始化开始时被初始化。重建jython.jar在

相关问题 更多 >