ClassNotFoundException
NoClassDefFoundError
从上图可以看出ClassNotFoundException
继承至Exception
,NoClassDefFoundError
继承至Error
,两者均为找不到类而发生的。不同在于ClassNotFoundException
为受检异常,当应用程序运行的过程中尝试使用类加载器去加载Class文件的时候,如果没有在classpath中查找到指定的类,就会抛出ClassNotFoundException
。一般情况下,当我们使用Class.forName()
或者ClassLoader.loadClass
以及使用ClassLoader.findSystemClass()
在运行时加载类的时候,如果类没有被找到,那么就会导致JVM抛出ClassNotFoundException
。NoClassDefFoundError
为运行时异常,当JVM在加载一个类的时候,如果这个类在编译时是可用的,但是在运行时找不到这个类的定义的时候,JVM就会抛出一个NoClassDefFoundError
错误。
ClassNotFoundException和NoClassDefFoundError的区别
最新推荐文章于 2022-10-02 10:14:55 发布