问题分析:
NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。
例如: 在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。
ClassNotFoundException 和NoClassDefFoundError的区别:
与ClassNotFoundException的不同在于,这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。很多Java开发者很容易在这里把这两个错误搞混。
简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误。
解决方法:
1、检查我们的jar包文件夹,lib文件夹是在WEB-INF中,不是新建lib文件夹在web中,不然会出现编译找不到静态jar包的问题
2、把项目中的out文件夹,target文件夹删除,然后rebuild project项目,重新编译。
3、当发生由于缺少jar文件,或者jar文件没有添加到classpath,或者jar的文件名发生变更、或者编译时候和运行时候的版本不一致,会导致java.lang.NoClassDefFoundError的错误。