2009年3月29日日曜日

Axis2でNoSuchMethodError

axis2でWeb Serviceを使おうと思ったら、使えない。Admin画面で調べてみると、
Exception occurred during code generation for the WSDL :
java.lang.NoSuchMethodError: javax.wsdl.Operation.getExtensionAttributes()Ljava/util/Map;
というエラー。

いろいろ実験してみたところ、自分が作ったプログラムは、他のサーバーでは普通に読み込め、Admin画面から確認できたので、問題はインフラ。つまり、サーバー側。
考えられそうなのは、大量のjarファイルの中で競合がおこり、古いjarのクラスファイルを読み込んでしまったということ。
早速javax.wsdl.Operationクラスのありかを調べてみると、wsdl4j-1.6.2.jarとwsdl4j-1.5.1.jarの両方が読み込まれていた。Axis1.4.1に付属のwsdl4jは1.6.2なので、1.5.1を削除する。
そうすると、あっさり起動。

しかし、エラーメッセージから、ここまでたどり着くのは結構面倒だ。原因がわかれば、エラーの意味も理解でき、仕方がないかなぁとは思うが。



昔のDLL地獄を思い出すなぁ。まあ、それでも自分で制御できるだけ、全然ましだけど。

0 コメント: