Jython 2.2 java.lang.ExceptionInInitializeError访问class.getPackage()时出错

2024-10-17 06:17:39 发布

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

我有一个Java类myObj,带有一个静态块,如图所示:

static{
    Class<myObj> klass = myObj.class;
    log.info("\nClientAPIVersion   : "+ klass.getPackage().getImplementationVersion());    
}

我正在Jython2.2中创建这个类的一个实例

当我运行python脚本时使用:

java -Dlog4j.configuration=file://${CLASSPATH}/log4j.xml -jar ~/jython_2.2/jython.jar test.py

我得到一个异常,如下所示:

File "test.py", line 42, in ?
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)

java.lang.ExceptionInInitializerError: java.lang.ExceptionInInitializerError

我在网上发现java.lang.ExceptionInInitializerError是由于静态块中的崩溃造成的

当我删除log.info时,python代码将正确执行。

我认为klass.getPackage()可能是null,但如果是这样,它应该在日志中简单地打印'null'。为什么会有例外

问题的根源是什么?我该如何解决?谢谢


Tags: infologlang静态javamethodatsun