Jar未使用包含的类或名称空间冲突



我使用netbeans从WSDL文档生成web服务客户端。

客户机在我们将其放入生产环境之前工作正常。jar是根据jaxws-api.jar和jaxb-api.jar中的javax.ws.xxxxx类生成的,我们将它们放在我们的生产类路径中。

在我们的生产环境中,我们有其他依赖于xfire库的代码。当我们尝试实例化SubmissionAPI()时,我们会得到一个noclassdefffound异常。我将堆栈跟踪粘贴到下面。

UBLSoapTest类似乎调用了正确的'Service'类,而不是'Service'类正在调用org.codehaus.xfire.jaxws.Provider.

我已经检查了javax.xml.ws的源代码。

配置"import javax.xml.ws.spi.Provider;

我们已经尝试用javax组装jar。并且仍然得到相同的结果。我怀疑我们需要在manifest文件中设置一个类路径,但我不确定需要在那里。

FAIL: Exception: java.lang.NoClassDefFoundError: Could not initialize class
org.codehaus.xfire.jaxws.JAXWSHelper
org.codehaus.xfire.jaxws.ServiceDelegate.<init>(ServiceDelegate.java:33)
org.codehaus.xfire.jaxws.ServiceDelegate.<init>(ServiceDelegate.java:53)
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)

我甚至不知道从这里往哪里看。

我们试过在manifest中设置classpath,但是没有成功。

我们尝试过的基本jar结构是:

/org/xxxx
/META-INF/xxx

/org/xxx
/META-INF/xxx
/javax/xxx

/org/xxx
/META-INF/xxx
/jaxws-api.jar
/jaxb.jar

似乎您缺少JAX-WS的impl jar。如果您依赖Codehaus来提供impl,那么您可能希望确保他们的impl能够正常工作。根据他们的网站,这是一个新支持的组件。

另一种方法是提供自己的impl jar并将其放在类路径中,以便在其中找到JAX-WS接口。但通常情况下,你部署web服务应用的应用服务器应该在它的类路径中包含这个impl。

最新更新