класс не найден на войне, но доступен - PullRequest
0 голосов
/ 05 июля 2019

У меня война, которую я пытаюсь запустить под Tomcat, но я получаю сообщение об ошибке, в котором говорится, что класс не найден.

java.lang.ClassNotFoundException: org.jboss.weld.proxy.WeldConstruct

Когда я проверяю взорванную войну, я вижу, что класс доступен. Когда я теперь перемещаю папку WEB-INF / lib в недоступное для Tomcat место и добавляю путь к lib / * в путь к классам, все работает нормально. Если я оставлю занятия также в папке WEB-INF / lib, Tomcat начнет жаловаться на двойные найденные классы ...

Итак, что-то происходит с моим загрузчиком классов, но я не могу его найти. Другой проект, который у меня есть, просто отлично работает. Это может быть как-то связано со сваркой (реализация cdi)

Любой совет приветствуется. Спасибо!

at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at org.apache.catalina.core.ContainerBase.startInternal(Unknown Source)
at org.apache.catalina.core.StandardHost.startInternal(Unknown Source)
at org.apache.catalina.util.LifecycleBase.start(Unknown Source)
at org.apache.catalina.core.ContainerBase$StartChild.call(Unknown Source)
at org.apache.catalina.core.ContainerBase$StartChild.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(Unknown Source)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at org.apache.catalina.core.ContainerBase.startInternal(Unknown Source)
at org.apache.catalina.core.StandardEngine.startInternal(Unknown Source)
at org.apache.catalina.util.LifecycleBase.start(Unknown Source)
at org.apache.catalina.core.StandardService.startInternal(Unknown Source)
at org.apache.catalina.util.LifecycleBase.start(Unknown Source)
at org.apache.catalina.core.StandardServer.startInternal(Unknown Source)
at org.apache.catalina.util.LifecycleBase.start(Unknown Source)
at org.apache.catalina.startup.Catalina.start(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.catalina.startup.Bootstrap.start(Unknown Source)
at org.apache.catalina.startup.Bootstrap.main(Unknown Source)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(Unknown Source)
at org.apache.catalina.util.LifecycleBase.start(Unknown Source)
at org.apache.catalina.core.ContainerBase$StartChild.call(Unknown Source)
at org.apache.catalina.core.ContainerBase$StartChild.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(Unknown Source)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
... 22 more

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001524: Unable to load proxy class for bean org.apache.cxf.cdi.ContextProducerBean@4d0ad526 with class class java.lang.Object
at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:38)
at org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl.fire(AfterDeploymentValidationImpl.java:28)
at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:505)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:93)
at org.jboss.weld.environment.servlet.WeldServletLifecycle.initialize(WeldServletLifecycle.java:236)
at org.jboss.weld.environment.servlet.EnhancedListener.onStartup(EnhancedListener.java:62)
at org.apache.catalina.core.StandardContext.startInternal(Unknown Source)
... 28 more

Caused by: org.jboss.weld.exceptions.WeldException: WELD-001524: Unable to load proxy class for bean org.apache.cxf.cdi.ContextProducerBean@4d0ad526 with class class java.lang.Object
at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:378)
at org.jboss.weld.bean.proxy.ProxyFactory.run(ProxyFactory.java:331)
at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:323)
at org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:83)
at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:205)
at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:195)
at org.jboss.weld.bean.proxy.ClientProxyProvider.access$100(ClientProxyProvider.java:44)
at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:52)
at org.jboss.weld.bean.proxy.ClientProxyProvider$CreateClientProxy.apply(ClientProxyProvider.java:48)
at org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.lambda$null$0(ReentrantMapBackedComputingCache.java:55)
at org.jboss.weld.util.LazyValueHolder$1.computeValue(LazyValueHolder.java:32)
at org.jboss.weld.util.LazyValueHolder.get(LazyValueHolder.java:46)
at org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getValue(ReentrantMapBackedComputingCache.java:72)
at org.jboss.weld.util.cache.ReentrantMapBackedComputingCache.getCastValue(ReentrantMapBackedComputingCache.java:78)
at org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:229)
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:688)
at org.jboss.weld.manager.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:794)
at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:92)
at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:336)
at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:347)
at org.jboss.weld.injection.producer.ResourceInjector$1.proceed(ResourceInjector.java:69)
at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
at org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:71)
at org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:117)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:161)
at org.jboss.weld.contexts.unbound.DependentContextImpl.get(DependentContextImpl.java:70)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:694)
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:717)
at org.jboss.weld.util.ForwardingBeanManager.getReference(ForwardingBeanManager.java:64)
at org.jboss.weld.bean.builtin.BeanManagerProxy.getReference(BeanManagerProxy.java:87)
at org.apache.cxf.cdi.JAXRSCdiResourceExtension.loadBeans(JAXRSCdiResourceExtension.java:477)
at org.apache.cxf.cdi.JAXRSCdiResourceExtension.loadServices(JAXRSCdiResourceExtension.java:460)
at org.apache.cxf.cdi.JAXRSCdiResourceExtension.load(JAXRSCdiResourceExtension.java:248)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:187)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at javax.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:124)
at org.jboss.weld.util.Observers.notify(Observers.java:166)
at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171)
at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
at org.jboss.weld.bootstrap.events.AbstractDeploymentContainerEvent.fire(AbstractDeploymentContainerEvent.java:35)
... 34 more

Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/jboss/weld/proxy/WeldConstruct
at org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:138)
at org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:481)
at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:370)
... 86 more

Caused by: java.lang.NoClassDefFoundError: org/jboss/weld/proxy/WeldConstruct
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.weld.util.bytecode.ClassFileUtils.toClass2(ClassFileUtils.java:165)
at org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:134)
... 88 more

Caused by: java.lang.ClassNotFoundException: org.jboss.weld.proxy.WeldConstruct
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 96 more

1 Ответ

0 голосов
/ 07 июля 2019

Обнаружено, что это как-то связано с Apache CXF-CDI и реализацией Weld-CDI. Когда я удаляю зависимость CXF-CDI, она запускается (но у Rest нет CDI). С CXF dep библиотека не найдена. Так что, вероятно, проблема загрузчика классов и что-то с отражением Я предполагаю, что CDI использует много отличий ... Теперь я отошел от CXF и заменил его на RestEasy (также JBoss, как реализация Weld CDI), и теперь он работает нормально.

Итак ... Это ответ? По крайней мере, есть решение:)

...