NetBeans IDE 6.0.1を利用して、Webサービスのクライアントを開発していた際に発生した問題の解決方法。
NetBeansのJava PlatformとしてJDK 1.6(実際には1.6.0_04を利用)を利用した場合、NetBeansは最新のJAX-WS 2.1をバンドルしているものの、JDK 1.6自体が1つ前のバージョンのJAX-WS 2.0をバンドルしているため、実行時に以下のようなエラーが発生してしまう。
JDK 6 Update 4からは最新のJAX-WS 2.1とJAXB 2.1が含まれている模様。
参照:http://weblogs.java.net/blog/ramapulavarthi/archive/2008/01/jaxws_21_and_ja.html
javax.xml.ws.WebServiceException: Provider com.sun.xml.ws.spi.ProviderImpl not found
上記エラーであるが、以下のような方法で強制的にJAX-WS 2.1を使うように指定することで回避可能である。
- プロジェクトを右クリックし[Properties]メニューを選択
- プロジェクトのプロパティで[Libraries]のカテゴリを選択
[Run]タブを選択し[Add Library ...]ボタンを押す[Run]タブでは無く[Compile]タブの方が良さそう- Add Libraryの画面で"JAX-WS 2.1"、"JAXB 2.1"を選択し、Run-time Librariesに追加する
- [OK]ボタンを押してプロジェクトのプロパティ画面を閉じる
【備考】
java.netではEndorsed directoryを使った本問題の解決方法が示されているのだが、上手く行かなかったため上記の対応を取った。
参照:https://jax-ws.dev.java.net/guide/Using_JAX_WS_2_1_with_JavaSE6.html