您的位置:首页 > 运维架构 > Apache

配置Struts2 遇到的两个异常 java.lang.ClassNotFoundException / org.apache.catalina.LifecycleException

2018-03-05 21:55 721 查看
异常一:java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275)
 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
 at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:540)
 at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:521)
 at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:256)
 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4485)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5125)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
 at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
 at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
解决方案:在struts2.5.14.1版本下org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 是不对的,手动找一下或者建一个java类假装实例一个StrutsPrepareAndExecuteFilter对象,就能够看到在该版本下的类路径,相比原路径少了一个ng,在web.xml中应该配置为:  <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
解决了这个异常之后又遇到一个异常:
异常2:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Struts]]at java.util.concurrent.FutureTask.report(Unknown Source)
 at java.util.concurrent.FutureTask.get(Unknown Source)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)
 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
 at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)............................................................该异常会导致eclipse启动tomcat失败,并直接弹出提示框警告

找了下根本问题其实出在:java.lang.ClassNotFoundException: org.apache.logging.log4j.Logger导入log4j-api-2.9.1.jar就可以解决了
类似的问题应该翻翻详细的错误提示,重要原因一般会caused by提示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐