NoClassDefFoundError 和 ClassNotFoundException 的主要区别是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计828个文字,预计阅读时间需要4分钟。
从继承层次上来看,ClassNotFoundException是从Exception继承的,因此它是一个检查异常。而NoClassDefFoundError是从Error继承的。与ClassNotFoundException相比,一个明显的区别是,NoClassDefFoundError通常表示类定义在运行时没有找到,而ClassNotFoundException则可能是因为类路径问题或类名错误。
从类继承层次上来看,ClassNotFoundException是从Exception继承的,所以ClassNotFoundException是一个检查异常。NoClassDefFoundError是从Error继承的。和ClassNotFoundException相比,明显的一个区别是,NoClassDefFoundError并不需要应用程序去关心catch的问题。
NoClassDefFoundError
当JVM在加载一个类的时候,如果这个类在编译时是可用的,但是在运行时找不到这个类的定义的时候,JVM就会抛出一个NoClassDefFoundError错误。比如当我们在new一个类的实例的时候,如果在运行时类找不到,则会抛出一个NoClassDefFoundError的错误。通常发生在执行动态代码块或者初始化静态字段时报了异常,从而导致类初始化失败而引发NoClassDefFoundError。
本文共计828个文字,预计阅读时间需要4分钟。
从继承层次上来看,ClassNotFoundException是从Exception继承的,因此它是一个检查异常。而NoClassDefFoundError是从Error继承的。与ClassNotFoundException相比,一个明显的区别是,NoClassDefFoundError通常表示类定义在运行时没有找到,而ClassNotFoundException则可能是因为类路径问题或类名错误。
从类继承层次上来看,ClassNotFoundException是从Exception继承的,所以ClassNotFoundException是一个检查异常。NoClassDefFoundError是从Error继承的。和ClassNotFoundException相比,明显的一个区别是,NoClassDefFoundError并不需要应用程序去关心catch的问题。
NoClassDefFoundError
当JVM在加载一个类的时候,如果这个类在编译时是可用的,但是在运行时找不到这个类的定义的时候,JVM就会抛出一个NoClassDefFoundError错误。比如当我们在new一个类的实例的时候,如果在运行时类找不到,则会抛出一个NoClassDefFoundError的错误。通常发生在执行动态代码块或者初始化静态字段时报了异常,从而导致类初始化失败而引发NoClassDefFoundError。

