ClassNotFoundException和NoClassDefFoundError的区别

ClassNotFoundException

ClassNotFoundException的产生原因:就是找不到指定的class。 ClassNotFoundException发生在加载阶段

常见的场景就是:

  1 调用class的forName方法时,找不到指定的类

  2 ClassLoader 中的 findSystemClass() 方法时,找不到指定的类

  3 ClassLoader 中的 loadClass() 方法时,找不到指定的类

NoClassDefFoundError

NoClassDefFoundError发生在初始化阶段

常见的场景就是:

    1 类依赖的class或者jar不存在

  2 类文件存在,但是存在不同的域中

  3 大小写问题,javac编译的时候是无视大小的,很有可能你编译出来的class文件就与想要的不一样!这个没有做验证。

原文地址:https://www.cnblogs.com/qunan/p/6861937.html