NoClassDefFoundError过错的产生,是因为Java虚拟bai机在编译du时能找到适宜的类,zhi而在运dao行时不能找到适宜的类导致的过错。也就是说;,NoClassDefFoundError产生在编译时对应的类可用,而运转时在Java的classpath途径中,对应的类不可用导致的过错。解决方法要根据实际状况来判定,过错原因有以下几种:
1)当产生因为缺少jar文件,或许jar文件没有添加到classpath,或许jar的文件名产生变更会导致java.lang.NoClassDefFoundError的过错。
2)当类不在classpath中时,这种状况很难切当的知道,但假如在程序中打印出System.getproperty(“java.classpath”),能够得到程序实际运转的classpath运转时清晰指定你认为程序能正常运转的-classpath参数,假如增加之后程序能正常运转,阐明本来程序的classpath被其他人覆盖了。
3)NoClassDefFoundError也或许因为类的静态初始化模块过错导致,当你的类履行一些静态初始化模块操作,假如初始化模块抛出反常,哪些依靠这个类的其他类会抛出NoClassDefFoundError的过错
java.lang.noclassdeffounderror解决办法
1、项目依赖的jar包未全部导入;
如:java.lang.NoClassDefFoundError:Couldnotinitializeclasscom.esms.common.util.XmlUtil,当你去查这个类的时分发现这个类是存在,之所以抱着个错是
因为在这个类里面的方法引证了其他jar包中的类的方法,而这个被引证的这个jar包刚好缺失,所以抛出这个错。
解决办法:一层一层去查找并导入缺失的jar包
2、类中package的地址不对
如:你在com.phome.demo1中有个类test.java,那么这个类的package便是com.phome.demo1
这时分刚好你在com.phome.demo2下面也有一个test.java这个类,而这个类的package也是com.phome.demo1,这种状况下也会抛出这个错。或许你会说这种状况在编写代码的时分会抛出这个错,没错这种状况大多数状况下是可以防止的,但是我确实是遇到了,很诡异。
解决办法:修正好名称重新编译即可