com.sun.xml.internal.ws.fault.SOAPFaultBuilder的NoClassDefFoundError

xli*_*xli 5 java soap web-services jar soapfault

我们的实时环境中的Web服务客户端最近发生了例外:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder 
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
at com.sun.proxy.$Proxy146.search(Unknown Source)
....
Run Code Online (Sandbox Code Playgroud)

我已经做了很多在线搜索,包括StackOverflow上的一些帖子:

使用CXF捕获Web服务异常:NoClassDefFoundError:SOAPFaultBuilder

无法初始化com.sun.xml.internal.ws.fault.SOAPFaultBuilder类

java.lang.NoClassDefFoundError:无法初始化com.sun.xml.internal.ws.fault.SOAPFaultBuilder类

我的理解是我们的客户端从服务器收到了SOAP错误,并且缺少一些jar文件。因此,我正在尝试通过重新创建解决该问题。

我在Eclipse中创建了一个简单的Web服务服务器项目,该项目具有一个Web方法,该方法抛出一个由注释的简单故障类@WebFault。然后,我创建了一个使用Web方法的简单Web服务客户端项目。客户端项目的类路径中没有任何其他库/ jar;它仅有的就是JRE。令我惊讶的是,它没有引发NoClassDefFoundError异常!相反,我javax.xml.ws.soap.SOAPFaultException在服务器端定义了I。

该类SOAPFaultBuilder确实位于JRE的rt.jar中。因此,我创建的简单Web服务项目可能会按预期工作。但是,我们的实时环境中的Web服务客户端如何引发NoClassDefFoundError异常?该项目肯定在类路径中有rt.jar。

任何人都可以阐明这个问题吗?如果缺少一些jar文件(来自jaxws RI或Apache CXF或其他文件),为什么我创建的超级简单客户端没有抛出错误?实时环境和本地环境都使用Java7u51。

aws*_*ome 1

我有同样的错误,我通过从 tomcat lib 文件夹中删除 jax-impl.jar 解决了这个问题。jaxb jar 版本可能与我安装在 tomcat 中的 web 应用程序之一发生冲突。

http://programtalk.com/java/i-was-running-gwt-application-on-tomca/