Tomcat启动后,我看到了一些非常奇怪的东西。我已经部署了15个应用程序,并且一切正常,直到尝试访问特定应用程序上的特定页面为止。有一些交叉依赖性,例如服务。

如果我自己部署有问题的应用程序,则可以无问题地查看页面。如果我一个接一个地部署所有其他应用程序,则可以无问题地查看页面。如果所有应用程序都在启动时一起部署,则这是我看到以下错误的时间:


严重:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数实例化页面
org.apache.wicket.WicketRuntimeException:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数实例化页面
在org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212)
在org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:65)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)
在org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
在org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1252)
在org.apache.wicket.RequestCycle.step(RequestCycle.java:1331)
在org.apache.wicket.RequestCycle.steps(RequestCycle.java:1438)
在org.apache.wicket.RequestCycle.request(RequestCycle.java:546)
在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
在org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在com.ideasx.stats.HttpFilterStatCounter.doFilter(HttpFilterStatCounter.java:87)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)
在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:313)
在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:895)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:918)
在java.lang.Thread.run(Thread.java:695)
造成原因:java.lang.reflect.InvocationTargetException
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
在java.lang.reflect.Constructor.newInstance(Constructor.java:513)
在org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:188)
...另外30个
原因:java.lang.NoClassDefFoundError:无法初始化类net.sf.cglib.proxy.Enhancer
在org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:159)
在org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:130)
在org.apache.wicket.injection.Injector.inject(Injector.java:103)
在org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInjector.java:39)
在org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentInjector.java:52)
在org.apache.wicket.Application.notifyComponentInstantiationListeners(Application.java:1093)
在org.apache.wicket.Component。(Component.java:926)
在org.apache.wicket.MarkupContainer。(MarkupContainer.java:113)
在org.apache.wicket.markup.html.WebMarkupContainer。(WebMarkupContainer.java:49)
在org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:51)
在org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:43)
在org.apache.wicket.markup.html.panel.Panel。(Panel.java:76)
在com.company.web.view.purchase.buy.BuyAGiftPanel。(BuyAGiftPanel.java:54)
在com.company.web.view.purchase.buy.BuyAGiftPage。(BuyAGiftPage.java:22)
...另外35个


我检查了依赖冲突,没有发现任何异常。所以我的问题是这个。鉴于我可以按特定顺序部署应用程序并且看不到错误,因此Tomcat是否可能对此负责?我将如何找到问题?

编辑添加:
似乎在启动时,干净的会话和对应用程序的第一个请求会引发以下强制转换异常:


严重:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数实例化页面
org.apache.wicket.WicketRuntimeException:无法使用构造函数public com.company.web.view.purchase.buy.BuyAGiftPage(org.apache.wicket.PageParameters)和参数实例化页面
在org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:212)
在org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:65)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.newPage(BookmarkablePageRequestTarget.java:298)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.getPage(BookmarkablePageRequestTarget.java:320)
在org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.processEvents(BookmarkablePageRequestTarget.java:234)
在org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
在org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1252)
在org.apache.wicket.RequestCycle.step(RequestCycle.java:1331)
在org.apache.wicket.RequestCycle.steps(RequestCycle.java:1438)
在org.apache.wicket.RequestCycle.request(RequestCycle.java:546)
在org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:486)
在org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:319)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在com.ideasx.stats.HttpFilterStatCounter.doFilter(HttpFilterStatCounter.java:87)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:607)
在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:315)
在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:895)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:918)
在java.lang.Thread.run(Thread.java:695)
造成原因:java.lang.reflect.InvocationTargetException
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处
在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
在java.lang.reflect.Constructor.newInstance(Constructor.java:513)
在org.apache.wicket.session.DefaultPageFactory.createPage(DefaultPageFactory.java:188)
...另外30个
造成原因:java.lang.ExceptionInInitializerError
在org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:159)
在org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:130)
在org.apache.wicket.injection.Injector.inject(Injector.java:103)
在org.apache.wicket.injection.ConfigurableInjector.inject(ConfigurableInjector.java:39)
在org.apache.wicket.injection.ComponentInjector.onInstantiation(ComponentInjector.java:52)
在org.apache.wicket.Application.notifyComponentInstantiationListeners(Application.java:1093)
在org.apache.wicket.Component。(Component.java:926)
在org.apache.wicket.MarkupContainer。(MarkupContainer.java:113)
在org.apache.wicket.markup.html.WebMarkupContainer。(WebMarkupContainer.java:49)
在org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:51)
在org.apache.wicket.markup.html.WebMarkupContainerWithAssociatedMarkup。(WebMarkupContainerWithAssociatedMarkup.java:43)
在org.apache.wicket.markup.html.panel.Panel。(Panel.java:76)
在com.company.web.view.purchase.buy.BuyAGiftPanel。(BuyAGiftPanel.java:54)
在com.company.web.view.purchase.buy.BuyAGiftPage。(BuyAGiftPage.java:22)
...另外35个
导致原因:java.lang.ClassCastException:net.sf.cglib.proxy.Enhancer $ EnhancerKey $$ KeyFactoryByCGLIB $$ 7fb24d72无法转换为net.sf.cglib.core.KeyFactory
在net.sf.cglib.core.KeyFactory $ Generator.create(KeyFactory.java:145)
在net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
在net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
在net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
在net.sf.cglib.proxy.Enhancer。(Enhancer.java:69)
...还有49个

最佳答案

看来这并不是特定于Tomcat的。搜索更多内容后,我发现cglib_nodep依赖项存在一些类加载问题。我从树中排除了该库,明确定义了cglib 2.2版,并清除了所有内容。

http://forum.spring.io/forum/spring-projects/web/flex/65337-an-strange-error-with-net-sf-cglib-core-keyfactory

关于java - Tomcat:部署多个WAR时出现应用程序错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27610788/

10-11 15:18