java.lang.NoClassDefFoundError:无法初始化类org.apache.axis.utils.XMLUtils

时间:2013-12-31 08:23:50

标签: java tomcat

java.lang.NoClassDefFoundError: Could not initialize class org.apache.axis.utils.XMLUtils

我收到此错误。如何避免这种异常。请给我一个解决方案。

4 个答案:

答案 0 :(得分:0)

此异常可能意味着必须通过反射创建实例,但相应的类不在执行类路径中。检查执行类路径。

新实例的创建也可能取决于某些错误或缺失的配置。检查执行配置文件。

答案 1 :(得分:0)

NoClassDefFoundError意味着,在编译时可用的库在运行时不可用。

在这种情况下,它是包含org.apache.axis.utils.XMLUtils类的jar文件。确保它在类路径中可用。

答案 2 :(得分:0)

NoClassDefFoundError意味着编译器尝试在编译时加载类,但在编译时不能使用所需的类。

然后将所需的jar文件添加到您的程序中。你能添加这个jar文件:axis-1.2.jar

答案 3 :(得分:0)

根据Oracle:

  如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为普通方法调用的一部分或作为使用新表达式创建新实例的一部分),则抛出

NoClassDefFoundError没有找到班级的定义。

用简单的语言表示“在编译时class存在,但在运行时,它无法找到/加载class

问题来了:为什么我的代码会编译?

答案可能是因为您使用Eclipse添加了jars。但是Eclipse实际上并没有将jars移到你classpath中。它只是在编译时使用引用jars的那些class。所以你的代码编译得很好。
之后,您将项目移动到tomcat,当它尝试在这些'jar'中加载某个类时,它无法找到jars,因为您从未将这些libraries(jars)移动到类路径中。

解决方案:
将所有/WEB-INF/lib移动到项目的libraries/jars中。现在,/WEB-INF/lib下的所有classpath都将归入{{1}}。

您可以在Oracle's Docs& this article