注意 NoClassDefFoundError 和 ClassNotFoundException 的区别
ClassNotFoundException
是在编译时错误。编译时候在classpath
中找不到对应的类而发生的错误。
NoClassDefFoundError
是运行时错误。在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。所以当你看到Caused by: java.lang.NoClassDefFoundError
的时候,而该类却又是存在的。
最普遍的情况也应该是和下面这种情况一样,就是该类的静态初代码块初始化的时候出现了异常
static { try { //... } catch (Exception e) { logger.error("Failure during static initialization",e); throw new ExceptionInInitializerError(e); } }
我实际的情况也是如此