java - Jar 不使用包含的类或命名空间冲突

标签 java jar namespaces collision

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

客户端工作正常,直到我们将其放入生产环境中。这些 jar 是针对 jaxws-api.jar 和 jaxb-api.jar 中的 javax.ws.xxxxx 类生成的,我们将其放置在生产类路径中。

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

UBLSoapTest 类似乎调用了正确的“Service”类,但“Service”类 正在调用 org.codehaus.xfire.jaxws.Provider。

我检查了 javax.xml.ws.Service 的源代码,它有“import javax.xml.ws.spi.Provider;”

我们尝试用里面的 javax.xxxx 类组装 jar,但仍然得到相同的结果。我怀疑我们需要在 list 文件中设置类路径,但我不确定那里需要什么。

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)

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

我们尝试在 list 中设置类路径,但收效甚微。

我们尝试过的基本 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 接口(interface)。但通常,部署 Web 服务应用程序的应用程序服务器应在其类路径中包含 impl。

关于java - Jar 不使用包含的类或命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614876/

相关文章:

java - 无法使用 Java 类和 Jar 文件找到或加载主类

javascript - 如何初始化命名空间内的所有方法?namespaces javascript INITIALIZING ALL methods

namespaces - 如何更改 ReSharper 建议的命名空间的根目录?

java - 使用 xml 进行 struts 验证

java - 在 Linux 中运行还是通过 Eclipse 运行?

java - 如何从 vaadin 的一行中获取特定值?

java - 可以将配置文件放在 JAR 中吗?

java - 从 jar 文件同步 java 源

java - 访问主键异常

wpf - 在哪里可以找到 XAML 命名空间 d ="http://schemas.microsoft.com/expression/blend/2008"映射库?