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

Java Jar未使用包含的类或命名空间冲突,java,jar,namespaces,collision,Java,Jar,Namespaces,Collision,我正在使用netbeans从WSDL文档生成web服务客户机 客户机工作正常,直到我们将其放入生产环境中。jar是根据jaxws-api.jar和jaxb-api.jar中的javax.ws.xxxxx类生成的,我们将它们放在了产品类路径中 在我们的生产环境中,我们有其他依赖于xfire库的代码。当我们尝试实例化SubmissionAPI()时,我们得到一个NoClassDefFound异常。我正在粘贴下面的堆栈跟踪 UBLSoapTest类似乎调用了正确的“服务”类,但是“服务”类 正在调用o

我正在使用netbeans从WSDL文档生成web服务客户机

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

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

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

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

我们已经尝试将jar与内部的javax.xxxx类组装在一起,但仍然得到相同的结果。我怀疑我们需要在清单文件中设置一个类路径,但我不确定需要在那里设置什么

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)


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


另一种方法是提供您自己的impljar并将其放入类路径中,以便在那里找到JAX-WS接口。但通常部署web服务应用程序的应用程序服务器应该在其类路径中包含impl。

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


另一种方法是提供您自己的impljar并将其放入类路径中,以便在那里找到JAX-WS接口。但通常部署web服务应用程序的应用程序服务器应该在其类路径中包含impl。

谢谢您的回答!这两个api jar不是impl吗?如果没有,我们是否需要从javaws-ri下载中复制整个/lib文件夹?还是别的什么?(显然xfire不适用于此构建)通常,任何包含名称“api”的jar都只是编译代码的接口。jaxws-api.jar可能只包含接口而没有实现。因此,类装入器将搜索您的类路径以找到第一个实现,并可能从codehausjars中获取它,而codehausjars可能不是JAX-WS的完整实现。(但话说回来,可能是这样。我之所以怀疑,是因为我在他们的网站上看到它是新添加的。)正如我所说,据我所知,所有JEE应用服务器都应该为JAX-WS提供实现。如果没有,请尝试下载参考实现:--您使用哪个应用程序服务器?我错过了您评论的第二部分。看起来您已经在研究参考实现了。您不需要复制lib目录中的所有jar。首先尝试复制包含实现的jaxb-impl.jar。如果您得到更多NoClassDefFoundError,请在lib目录中搜索它,以查看还需要复制哪些内容。很抱歉,接受答案花了这么长时间,但与所有产品一样,这不是我们唯一的问题。您是对的,我们在类路径中需要jaxb-impl.jar。我们还发现在类路径中没有包含api JAR。有一个属性xml文件,我们需要列出这些文件以获取它们。(不用问,我们正在为java服务器运行一个非常定制的tomcat)。再次感谢你的帮助!谢谢你的回答!这两个api jar不是impl吗?如果没有,我们是否需要从javaws-ri下载中复制整个/lib文件夹?还是别的什么?(显然xfire不适用于此构建)通常,任何包含名称“api”的jar都只是编译代码的接口。jaxws-api.jar可能只包含接口而没有实现。因此,类装入器将搜索您的类路径以找到第一个实现,并可能从codehausjars中获取它,而codehausjars可能不是JAX-WS的完整实现。(但话说回来,可能是这样。我之所以怀疑,是因为我在他们的网站上看到它是新添加的。)正如我所说,据我所知,所有JEE应用服务器都应该为JAX-WS提供实现。如果没有,请尝试下载参考实现:--您使用哪个应用程序服务器?我错过了您评论的第二部分。看起来您已经在研究参考实现了。您不需要复制lib目录中的所有jar。首先尝试复制包含实现的jaxb-impl.jar。如果您得到更多NoClassDefFoundError,请在lib目录中搜索它,以查看还需要复制哪些内容。很抱歉,接受答案花了这么长时间,但与所有产品一样,这不是我们唯一的问题。您是对的,我们在类路径中需要jaxb-impl.jar。我们还发现在类路径中没有包含api JAR。有一个属性xml文件,我们需要列出这些文件以获取它们。(不用问,我们正在为java服务器运行一个非常定制的tomcat)。再次感谢你的帮助!
/org/xxxx
/META-INF/xxx
/org/xxx
/META-INF/xxx
/javax/xxx
/org/xxx
/META-INF/xxx
/jaxws-api.jar
/jaxb.jar