博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ClassNotFoundException和NoClassDefFoundError的区别
阅读量:7222 次
发布时间:2019-06-29

本文共 724 字,大约阅读时间需要 2 分钟。

  hot3.png

102545_BlhC_999023.png

  1. NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中错误和异常是有区别的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。

      1)加载时从外存储器找不到需要的class就出现ClassNotFoundException 

      2)连接时从内存找不到需要的class就出现NoClassDefFoundError

 

 

    2. ClassNotFoundException的产生原因:

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

要解决这个问题很容易,唯一需要做的就是要确保所需的类连同它依赖的包存在于类路径中。

 

    3. NoClassDefFoundError产生的原因:

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

由于NoClassDefFoundError是有JVM引起的,所以不应该尝试捕捉这个错误。

解决这个问题的办法就是:查找那些在开发期间存在于类路径下但在运行期间却不在类路径下的类。

转载于:https://my.oschina.net/zjg23/blog/1635701

你可能感兴趣的文章
Xcode: Show Bounds Rectangles for UIView in Interface Builder
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 省市区数据权限的实现效果...
查看>>
Binding的源与路径
查看>>
Android开发之模仿UC浏览器的菜单
查看>>
关于开发的点点滴滴
查看>>
三重积分的计算
查看>>
Linux命令的常用
查看>>
误读善泳者溺的古训,害人不浅_泳者无涤_新浪博客
查看>>
下载文件并显示进度条
查看>>
Window7下vagrant的部署
查看>>
快速掌握activity的生命周期
查看>>
android AIDL详解
查看>>
HDUOJ----4006The kth great number(最小堆...)
查看>>
截断上传原理剖析
查看>>
Ajax 控件列表名称简介
查看>>
UVa699 The Falling Leaves
查看>>
视觉冲击!12个精美绝伦的扁平化网站设计
查看>>
系统设置
查看>>
CSS基本知识5-CSS对齐
查看>>
vi 删除的一些命令
查看>>