2016-08-24 20 views
0

Apache CXFを使用してSOAP Webサービスを呼び出しています。 CXFはJava 8の一部であるjavax.annotation.Resourceアノテーションを使用しますが、私のアプリケーションではClassNotFoundExceptionが投げられます。標準のJavaクラスが見つかりません

java.lang.ClassNotFoundException: javax.annotation.Resource not found by my-application-name [164] 
    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558) 
    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79) 
    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[wrapped] java.lang.NoClassDefFoundError: javax/annotation/Resource 
    at org.apache.cxf.common.injection.ResourceInjector.<clinit>(ResourceInjector.java:59) 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.loadAndRegister(ExtensionManagerImpl.java:222) 
    at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:140) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:126) 
    at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:134) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:40) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:36) 
    at org.apache.cxf.bus.CXFBusFactory.createBus(CXFBusFactory.java:32) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:146) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:122) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:94) 
    at org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:83) 
    at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:106) 
    at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:216) 
    at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:206) 
    at org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:193) 
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:97) 
    at javax.xml.ws.Service.<init>(Service.java:77) 

この標準クラスでアプリケーションが動作しなくなる原因は何ですか?私はJava 8u91を使用しており、クラスはD:\dev\java\jdk_8u91\jre\lib\rt.jarにあります。

+0

マシンに2つのバージョンのJVMがある可能性はありますか? – AlexR

+0

@AlexR私は4つのJavaインストールがあります:)しかし、私は正しいものを実行していると確信しています。 – Qwerky

+0

私はあなたが信じていません。場合は、このクラスは、Java 8以前の別のジャーにあったということです。私は何とか間違ったjvmまたは少なくとも間違ったrt.jarを使用していると思います。 – AlexR

答えて

0

問題はOSGIに関連していました。私のアプリケーションではmaven-bundle-pluginを使ってOSGIバンドルを作成しましたが、インポートされていない主要なパッケージがいくつかありました。

<Import-Package> 
    javax.activation.*, 
    javax.annotation.*, 
    javax.jws.*, 
    ..more imports.. 
</Import-Package> 

がインポートされたパッケージに追加されると、問題は解決されました。