Fangen webservice Ausnahme mit CXF: NoClassDefFoundError: SOAPFaultBuilder
Frage
Ich habe mit Apache CXF wsdl2java Code generiert Methoden aus einem Webservice seit einiger Zeit zu nennen, die bisher fein gearbeitet hat .. Das Problem, das ich habe, ist, dass, wenn der Webservice (umgesetzt auf dem Flur von mir) berechtigterweise eine Seife Ausnahme auslöst, CXF kommt mit folgenden Fehlermeldung auf:
konnte nicht initialisiert Klasse com.sun.xml.internal.ws.fault.SOAPFaultBuilder
Ich bin mit Ubuntu 9.04, OpenJDK (IcedTea6 1.4.1) 6b14-1.1.1-0ubuntu11, Maven2 und CXF 2.2.3. Ich bin derzeit mit Verlust, wie dieses Problem zu lösen, wie der Code und den Setup Ich bin mit trivialer einfach scheint .. Wer in der Lage mich hier in der richtigen Richtung zeigen? Lassen Sie uns wissen, wenn ich weitere Details veröffentlichen kann ..
Dies ist die vollständige Stacktrace zurückgegeben:
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)
Lösung
Es gibt zwei interessante Dinge über diesen Stack-Trace:
1) Es wird Probleme haben eine SAAJ Implementierung zu finden. Wahrscheinlich Zugabe saaj-impl.jar zu dem Classpath könnte, dass lösen.
2) Es wird mit CXF haupt nicht. Es ist mit der Sun JAX-WS Referenzimplementierung, die in das jre gebaut ist. So sieht es aus wie die cxf Gläser werden überhaupt nicht aufgenommen werden.
Andere Tipps
Hat ähnliches Problem, wenn wir von Ant zu Maven sind umgeschaltet wird. Wir verwenden Sun JDK 1.6u20.
Wir haben diese Bibliotheken in Maven-assembled Krieg verpaßt:
jaxws-api jaxws-rt jaxws-Tools
sie alle Arbeiten Nach der Zugabe, wie es vorher gearbeitet hatte. Hoffe, dass dies jemand helfen!