【发布时间】: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 中的类。
【问题讨论】:
-
您的机器上是否有可能有 2 个版本的 JVM?
-
@AlexR 我安装了 4 个 Java :) 但我确信我运行的是正确的。
-
我相信你不是。情况是,这个类在 java 8 之前的单独 jar 中。我猜你以某种方式使用了错误的 jvm 或者至少是错误的 rt.jar。检查您用于运行 java 的所有参数
标签: java java-8 osgi cxf apache-felix