Я использую Apache CXF для вызова веб-службы SOAP. CXF использует аннотацию javax.annotation.Resource
, которая является частью Java 8, однако мое приложение бросает на нее 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
.
Есть ли шанс, что у вас есть две версии JVM на вашей машине? – AlexR
@AlexR У меня есть 4 Java-установки :), но я уверен, что у меня есть правильный. – Qwerky
Я считаю, что нет. Дело в том, что этот класс находился в отдельном банке до java 8. Я предполагаю, что каким-то образом вы используете неправильный jvm или, по крайней мере, неправильный rt.jar. Проверьте все параметры, которые вы используете для запуска java – AlexR