如何解决静态模块引起的java.lang.NoClassDefFoundError: Could not initialize class
/ noClassDefFoundErrorjava.lang.NoClassDefFoundError
这个错误是猝不及防的来了,当我搜索的时候,发现网上有许多文章,但是对于一个没有仔细思考,想快速找一个与自己的情况相匹配的解答,快速解决问题,反而会越忙越慌,很不容易。
我的情况是第一个类调用第二个类中的静态模块,或者静态变量,报了这个错误。
class ThingsHappen{
public void blueSky(){
ClassInitErrorNoDef.instance
//.....
}
}
class ClassInitErrorNoDef{
public final static ClassIinitErrorNoDef instance=new ClassInitErrorNoDef();
private ClassInitErrorNoDef(){
//做一些产生异常的事情,有没有try,catch
}
}
这样子第二个类ClassInitErrorNoDef,初始化的时候就会报错误,但是你没有try catch住,那么你在日志中也不会发现抛出了异常,那么第一个类的运行时候就会报这个错误,但是你还在想,这个类明明存在
解决办法,就是检查第二个类出现了什么样的异常。
与之伴随的会有这么种异常抛出:
段1错误:at com.utravel.demo.error.ClassWithInitErrors.<clinit>
java.lang.ExceptionInInitializerError
段2错误:java.lang.NoClassDefFoundError: Could not initialize class com..demo.error
段2错误是在段1出现之后,直接抛出noClassDeffFoundError,不会再抛出初始化ClassWithInitErrors错误。
我也是报这个错误,不知道怎么回事