【问题标题】:Standard java class not found未找到标准 java 类
【发布时间】:2016-12-31 11:40:56
【问题描述】:

我正在使用 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 中的类。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多