ExceptionInInitializerError与NoClassDefFoundError

今天写代码碰到了一个NoClassDefFoundError异常导致的crash,一开始不解,明明有这个类,为什么还找不到这个类的定义呢?

于是找到这个类的官方文档:

ExceptionInInitializerError与NoClassDefFoundError_第1张图片

文档也只是说找不到类的定义,并没有找到有用的信息。接着看ExceptionInInitializerError这个异常:

ExceptionInInitializerError与NoClassDefFoundError_第2张图片

看文档知道是类的静态块或者静态变量初始化时出了问题,导致抛这个异常。

接着往下看打印出的stack信息,可以看到是Facebook SDK的代码抛出了异常。按照提示的行数,可以找到是哪一行出了错。

从这个例子我们可以知道,静态块或静态变量的初始化出错(可以是任何的异常,如NullPointerException,ArrayIndexOutOfBoundsException等),会导致ExceptionInInitializerError异常。既然load类的时候,静态块或静态变量初始化出错,我们便认为找不到这个类,于是抛出NoClassDefFoundError异常。

 

References:

https://www.iteye.com/blog/deepinmind-2078286

 

你可能感兴趣的:(Android)