追赶web服务异常,并CXF:NoClassDefFoundError的:SOAPFaultBuil

2019-07-20 02:55发布

我一直在使用Apache CXF的WSDL2Java生成的代码现在调用从一段时间web服务的方法,迄今一直很好..我遇到的问题是,当WebService(实施刚刚从我厅)合法抛出一个SOAP异常,CXF想出了以下错误信息:

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

我使用Ubuntu 9.04的OpenJDK(IcedTea6 1.4.1)6b14-1.1.1-0ubuntu11,Maven2的和CXF 2.2.3。 我目前在有关如何解决这一问题的损失,作为代码和安装我使用似乎平凡简单..任何人都可以点我在这里向正确的方向? 让我知道如果我可以发布任何进一步的细节..

这是完整的堆栈跟踪返回:

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:107)
    at $Proxy36.downloadPDB(Unknown Source)
    at path.to.my.code.downloadInvalidFileID(SingleMethodTest.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)

Answer 1:

有两个关于堆栈跟踪有趣的事情:

1)它是找到一个SAAJ实现有问题。 可能加入SAAJ-impl.jar中的类路径可能会解决这个问题。

2)它不使用CXF的。 它使用的是内置于JRE的太阳JAX-WS参考实现。 因此,它看起来像CXF罐没有被拾起的。



Answer 2:

当我们从蚂蚁切换到Maven的有类似的问题。 我们使用Sun JDK 1.6u20。

我们已经错过了Maven的组装战争的这些库:

JAXWS-API JAXWS-RT JAXWS工具

将他们所有的作品,因为它曾经工作过之后。 希望这会帮助别人!



文章来源: Catching webservice exception with CXF: NoClassDefFoundError: SOAPFaultBuilder