我有一个带有静态块的Java类myObj
,如下所示:
static{
Class<myObj> klass = myObj.class;
log.info("\nClientAPIVersion : "+ klass.getPackage().getImplementationVersion());
}
我正在jython 2.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'。为什么例外?
问题的根源是什么?我该如何解决?感谢