java.lang.NoClassDefFoundError: 和java.lang.ClassNotFoundException:错误

 

今天在写代码是出现了以下的错误:

 

错误提示是Servlet执行抛出的异常

java.lang.NoClassDefFoundError:
java.lang.ClassNotFoundException:

然后看以下标记的地方,总感觉是架包的问题,所以特意去看了下架包,发现lib创建的时候不在web文件夹的WEB-INF文件下。

转移了以后程序可以正常运行了。

所以说在编译程序的时候我们可能会因为一点疏忽造成一些麻烦,但是不要慌,积极面对,记录没次的问题,相信我们会有完美的蜕变

在这里给大家分享一下java.lang.NoClassDefFoundError:和java.lang.ClassNotFoundException:两种异常错误。

NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。与ClassNotFoundException的不同在于,这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。很容易在这里把这两个错误搞混。也就是说,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。

NoClassDefFoundError和ClassNotFoundException区别

我们经常被java.lang.ClassNotFoundException和java.lang.NoClassDefFoundError这两个错误迷惑不清,尽管他们都与Java classpath有关,但是他们完全不同。NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误。ClassNotFoundException比NoClassDefFoundError容易解决,是因为在编译时我们就知道错误发生,并且完全是由于环境的问题导致。而如果你在J2EE的环境下工作,并且得到NoClassDefFoundError的异常,而且对应的错误的类是确实存在的,这说明这个类对于类加载器来说,可能是不可见的。
 

猜你喜欢

转载自blog.csdn.net/zx_balabala/article/details/81735427