java ClassNotFoundException和NoClassDefFoundError的区别【面试详解】

今天爱分享给大家带来java ClassNotFoundException和NoClassDefFoundError的区别【面试详解】,希望能够帮助到大家。

ClassNotFoundException和NoClassDefFoundError的区别
首先NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,

ClassNotFoundException的产生原因:
Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundException异常。
另外还有一个导致ClassNotFoundException的原因就是:当一个类已经某个类加载器加载到内存中了,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。

NoClassDefFoundError产生的原因:
如果JVM或者ClassLoader实例尝试加载(可以通过正常的方法调用,也可能是使用new来创建新的对象)类的时候却找不到类的定义。要查找的类在编译的时候是存在的,运行的时候却找不到了。这个错误往往是你使用new操作符来创建一个新的对象但却找不到该对象对应的类。这个时候就会导致NoClassDefFoundError。

人已赞赏
Java

java try-catch-finally执行顺序【面试题详解】

2020-10-30 18:26:32

Java

java 堆内存溢出异常代码编写例子【附代码】

2020-10-30 18:28:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();