【发布时间】:2013-05-20 19:31:06
【问题描述】:
我遇到了麻烦,我有一个 jar,合作伙伴创建该 jar 以从实现一些 wsdl 处理的 web 服务中读取,这是在 netbeans 中创建的。
所以我想使用这个jar,当我使用它时,我得到一个NoClassDefFoundError,我认为这是因为有一些库冲突,所以从堆栈跟踪中查看:
NoClassDefFoundError org.codehaus.xfire.jaxws.JAXWSHelper
[...]
org.codehaus.xfire.jaxws.Provider.createServiceDelegate(Provider.java:32)
javax.xml.ws.Service.<init>(Service.java:56)
org.ubl.soap.test.SubmissionAPI.<init>(SubmissionAPI.java:44)
我正在使用来自javax.xml.ws 的库,所以它使用Service.java,所以有时在该类中它使用类javax.xml.ws.Provider,但由于某种原因,它在来自org.codehaus.xfire.jaxws 的其他库中使用相同的类.
org.codehaus.xfire.jaxws 来自 xfire.jar 和 javax.xml.ws 来自我在项目中使用的两个 jar,一个是axis2,另一个是 jaxws-api.jar。
我想到的第一件事是,如果它是从axis2而不是jaxws-api.jar中获取的类,那么axis2中的类可能无法正常工作,因为它们较旧,所以如果我想使用jaxws中的类- api.jar 而不是axis2中的那些我该怎么办?
在类路径中,定义了它们两个,因此在不同的 jar 中定义了相同的类,但命名空间相同,我不能只删除axis2,因为系统正在使用其中的一些。 ..
所以我知道错误 NoDefFoundClass 是一个运行时错误,所以它可能构建正确,但在运行时是从 xfire 而不是axis2获取类...
【问题讨论】:
-
它叫
NoClassDefFoundError而不是NoDefFoundClass。也请张贴例外的顶部。问题是没有找到一些类。当您通过 FQN 处理类时,您编写的问题永远不会发生,因此,javax.xml.ws.Provider不应被处理为org.codehaus.xfire.jaxws.Provider -
对不起,上面是java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.xfire.jaxws.JAXWSHelper