找不到标准的java类

时间:2016-08-24 11:05:00

标签: java java-8 osgi cxf apache-felix

我正在使用Apache CXF来调用SOAP Web服务。 CXF使用javax.annotation.Resource注释,这是Java 8的一部分,但是我的应用程序正在为它注入ClassNotFoundException;

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中看到该类。

1 个答案:

答案 0 :(得分:0)

问题与OSGI有关。我的应用程序使用maven-bundle-plugin创建OSGI包,但是有一些未导入的密钥包。

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

javax.annotation.*添加到导入的包后问题就解决了。

相关问题