CXF를 사용하여 웹 서비스 예외를 잡는다 : noclassDeffounderRor : soapfaultBuilder

StackOverflow https://stackoverflow.com/questions/1494738

  •  18-09-2019
  •  | 
  •  

문제

나는 Apache CXF WSDL2Java를 사용하여 지금까지 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)
도움이 되었습니까?

해결책

그 스택 추적에는 두 가지 흥미로운 점이 있습니다.

1) SAAJ 구현을 찾는 데 문제가 있습니다. 아마도 saaj-impl.jar를 클래스 경로에 추가하면이를 해결할 수 있습니다.

2) CXF를 전혀 사용하지 않습니다. JRE에 내장 된 SUN JAX-WS 참조 구현을 사용하고 있습니다. 따라서 CXF 항아리가 전혀 픽업되지 않은 것처럼 보입니다.

다른 팁

ANT에서 Maven으로 전환 할 때 비슷한 문제가있었습니다. 우리는 Sun JDK 1.6U20을 사용합니다.

우리는 Maven에서 조립 된 전쟁 에서이 도서관을 놓쳤습니다.

JAXWS-API JAXWS-RT JAXWS-TOOLS

그것들을 추가 한 후에는 모두 이전에 효과가있는대로 작동합니다. 이것이 누군가를 도울 수 있기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top