2009-09-29 16 views
6

私はApache CXF wsdl2javaの生成コードを使用してWebサービスからメソッドを呼び出すことができましたが、これまでのところうまくいきました。私はUbuntuの9.04、OpenJDKの(IcedTea6 1.4.1)6b14-を使用していCXFでWebService例外をキャッチ:NoClassDefFoundError:SOAPFaultBuilder

Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder

:(ちょうど私から廊下実装)Webサービスは、合法的に石鹸の例外をスローしたときに、CXFは、次のエラーメッセージを思い付きます1.1.1-0ubuntu11、Maven2およびCXF 2.2.3。私は現在、この問題を解決する方法について、私が使用しているコードと設定が単純であるように見えます。ここに正しい方向で私を指摘できる人は誰ですか?

1)それは問題を抱えている:そのスタックトレース約2つの興味深いものがあります

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

CXSFFAQに「Java6の下で実行できますか」という項目がありますか? http://cxf.apache.org/faq.html#FAQ-FrequentlyAskedQuestions – skaffman

+0

うーん、ありがとう。私はそのメモを忘れて、今mavenのcom.sun.xml.bind jaxb-impl&jaxb-xjcを追加しました..しかし、これまでの運/変更はありません。私はこのいくつかでもっと働くでしょう.. – Tim

+0

いいえ、運がいいです見える:まだ同じスタックトレース..私はおそらくMavenを使用して除外する必要がありますか? – Tim

答えて

3

これは完全なスタックトレースが返されている..私はすべての詳細を投稿することができた場合、私に教えてくださいSAAJの実装が見つかりました。おそらく、saaj-impl.jarをクラスパスに追加すると解決されるかもしれません。

2)CXFをまったく使用していません。これは、JAXに組み込まれているSunのJAX-WSリファレンス実装を使用しています。したがって、cxf jarファイルはまったく拾われていないように見えます。

+0

面白い(よく目撃された!)。明日の朝、この最初の事を調べます! – Tim

+0

ありがとうございました、cxf依存関係を追加することがトリックでした!依存関係としてcxfを追加することは決してありませんでした。コードはそれがなくてもうまくいくようでした。 – Tim

4

AntからMavenに切り替えるときに同様の問題がありました。 Sun JDK 1.6u20を使用しています。それは前に働いていたとして、彼らにすべての作品を追加した後

JAXWS-API JAXWS-RT JAXWS-ツール

は、我々はのmaven-組み立て戦争の中にこれらのライブラリを逃しました。これが誰かを助けることを願っています!