Eclipse RCP アプリケーション内からMetro ライブラリを使用して Web サービスを呼び出そうとしています。関連する Metro jar ( webservices-tools.jar
、webservices-rt.jar
、およびwebservices-api.jar
) をプラグインにバンドルし、メイン アプリケーション プラグインをこの新しい Metro プラグインに依存させました。
もディレクトリに追加しましたwebservices-api.jar
。$JAVA_HOME/jre/lib/endorsed
Metro の Web サイトによると、これは Java 1.6 で Metro を使用する場合に必要です。
Web サービスを呼び出すと、次のエラーが表示されます。
javax.xml.ws.WebServiceException: Provider com.sun.xml.ws.spi.ProviderImpl not found
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.jav a:38)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:133)
at javax.xml.ws.spi.Provider.provider(Provider.java:83)
at javax.xml.ws.Service.<init>(Service.java:56)
...
Caused by: java.lang.ClassNotFoundException: com.sun.xml.ws.spi.ProviderImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301 )
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at org.eclipse.core.runtime.internal.adaptor.ContextFinder.load Class(ContextFinder.java:129)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.jav a:34)
... 43 more
このクラスcom.sun.xml.ws.spi.ProviderImpl
はwebservices-rt.jar
、Metro プラグインの一部である にあります。さらに、アプリケーション プラグイン コードがこのクラスを正常にロードできることを確認したので、なぜロードjavax.xml.ws.spi.FactoryFinder
できないのかわかりません。
javax.xml.ws.spi.FactoryFinder
( jrewebservices-api.jar
の承認されたディレクトリに入れなければならなかった jar) にあるので、これは承認されたコードが Eclipse プラグインからクラスをロードできないことに関係していると思われます。
承認されたディレクトリから JVM によってロードされたコードが、プラグインからクラスをロードできないということですか? これを有効にする方法はありますか?
Java バージョン: 1.6.0_16
Eclipse バージョン: Eclipse Java EE IDE for Web Developers ビルド ID: 20090920-1017 (それ以降のバージョンは表示されません)
Metro バージョン: Glassfish 2.1 に同梱
どんな助けでも大歓迎です。ありがとう。