启动Tomcat java.lang.NoClassDefFoundError异常解决方法

部署的项目,增加一些配置后启动Tomcat异常,删除后仍异常,单独自动Tomcat仍报错,异常信息如下:

java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1083)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4042)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4348)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.PeriodicEventListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

    ... 33 more


在网上搜解决方案有的说是jar包冲突,有的说是项目部署异常,众说纷纭,还有重新部署环境解决的,但个人感觉不是最优的解决方案,因为大型项目重新搭建开发环境并部署比较耗时,费心费力,浪费时间;经过一段时间的摸索,发现不是以上说的原因引起的,而是eclipse对应工作空间.metadata引起的,分析了一下可能的原因就是部署环境或配置插件过程中引起的异常,然后eclipse将异常信息写入到.metadata中,当对应配置删除或重新部署后改错误不存在,但.metadata中记录了相关的错误信息,Tomcat启动时检查到异常仍然存在导致服务无法正常启动

解决方案是删除.metadata中对应错误配置信息,如果知道是修改哪些配置引起的,可到.plugins下删除对应配置即可,如果不知道可将整个.metadata删除,但是代价比较大,在eclipse中部署的项目、任务及SVN资源库等信息将丢失,重新操作也是比较蛋疼的,后续有待进一步研究补充,如果哪位大神研究比较精通,可进一步交流学习,以上只是个人见解!喷子勿扰

你可能感兴趣的:(J2EE)