NoclassdefFoundError和ClassNotFoundException的不同

NoclassdefFoundError是一个错误(Eror),而ClassNotFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。

Classnotfoundexceptionl的产生原因

Java支持使用 lass. forname方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JWM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出 Classnotfoundexception异常。

Classnotfoundexception的产生原因

Java支持使用Cass. forname方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出 Class Notfoundexception异常。

Class Notfoundexception的产生原因主要是Java支持使用反射方式在运行时动态加载类,例如使用 Class. forname方法来动态地加载8类时,可以将类名作为参数传递给上述方法从而将指定类加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出 Classnotfoundexception异常。

解决该问题需要确保所需的类连同它依赖的包存在于类路径中,常见问题在于类名书写错误

另外还有一个导致 Classnotfoundexception的原因就是:当一个类已经某个类加载器加载到内存中了,此时另ー个类加载器又尝试着动 态地从同一个包中加载这个类。通过控制动态类加加载过程,可以避免上述情况发生。

Noclassdeffounderror产生的原因在于:如果JVM或者 Classloader实例尝试加载(可以通过正常的方法调用,也可能是使用new来创建新的对象)类的时候却找不到类的定义。要查找的类在编译的时候是存在的,运行的时候却找不到了。这个时候就会导致 NoclassdefFounderror

造成该问题的原因可能是打包过程漏掉了部分类,或者ar包出现损坏或者改。解决这个可题的办法是查找那些在开发期间存在于类路径下但在运行期间却不在类路径下的类。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容