NoClassDefFoundError与ClassNotFoundException的区别

NoClassDefError是一个错误,而ClassNotFoundException是一个异常,在java中对于错误和异常的处理机制是不同的,我们可以从异常中恢复程序,而不能从错误中恢复程序。

ClassNotFoundException产生的原因:

Java支持从Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法,都将导致该类被加载到JVM虚拟机内存中,如果这个类在类路径中没有被找到,

那么此时就会抛出异常ClassNotFoundException

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

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

 

NoClassDefFoundError产生的原因在于如果JVM或者ClassLoader实例尝试加载类的时候却找不到类的定义,要查找的类在编译的时候是存在的,在编译的时候却找不到了,这时就会报此错误。

造成该问题可能是在打包过程漏掉了部分分类,或者jar包出现损害或者篡改。

解救方法:
查找那些在开发期间存在于类路径下但在运行期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值