2.1NoClassDefFoundError和ClassNotFoundException区别

Posted xuan5301215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.1NoClassDefFoundError和ClassNotFoundException区别相关的知识,希望对你有一定的参考价值。

NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。

 

NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误。ClassNotFoundException比NoClassDefFoundError容易解决,是因为在编译时我们就知道错误发生,并且完全是由于环境的问题导致。

以上是关于2.1NoClassDefFoundError和ClassNotFoundException区别的主要内容,如果未能解决你的问题,请参考以下文章

将 Gradle 2.1.0 更新到 2.2.1 后出现 NoClassDefFoundError

java.lang.NoClassDefFoundError:javax/ws/rs/ext/MessageBodyWorkers

java.lang.NoClassDefFoundError: org/hibernate/cache/CacheProvider Spring和Hibernate整合出现这个

java 运行提示NoClassDefFoundError 请指教.

NoClassDefFoundError - Eclipse 和 Android

报错:maven:java.lang.NoClassDefFoundError: org/apache/commons/io/Charsets