另类的Server Tomcat v7.0 Server at localhost failed to start解决

最近在维护和升级公司的老项目,出现了一连串的几个bug;

记录一个重要的bug,这是走过的坑,笑着也要找出来。。。

报错场景

将jdk1.6更改为1.7之后,重新配置,项目是可以跑起来的,没啥问题。

但,当update maven之后,jdk版本变成默认的1.5的了。

在解决jdk版本问题后,又出现了一个bug : Server Tomcat v7.0 Server at localhost failed to start

经过尝试好几种方法,终于解决。

 

这是第一个bug。

maven-update project jdk变为1.5两种解决办法

在使用Maven构建项目时,生成的maven项目jdk默认使用的是jdk1.5。

另类的Server Tomcat v7.0 Server at localhost failed to start解决_第1张图片 

在手动修改了jdk之后,update project之后jdk又会变为1.5.

或者用eclipse的Maven插件生成的也是1.5

对于这种情况有两种办法,一是修改settings.xml,二是修改pom文件

1、配置settings.xml

打开 settings.xml 文件并编辑它(一般放在你的仓库目录目录) :

 
    jdk-1.8 
     
        true
         1.8 
     
 
    1.8             
    1.8     
    1.8 
 

 

找到 节点,并添加如上配置(本机 jdk 1.8.0——25 版本,配置时修改成你本机的 jdk 版本),保存后生效。

 

另类的Server Tomcat v7.0 Server at localhost failed to start解决_第2张图片

 

修改Eclipse中的设置,使配置生效。

2、配置pom.xml文件

节点添加如下配置(本机 jdk 1.7.0_79 版本,配置时修改成你本机的 jdk 版本):

 
     
         
            org.apache.maven.plugins 
            maven-compiler-plugin 
             1.7 1.7      
         
    

配置完成后,需要执行一次更新项目配置的动作。选中项目 –> 右键 –> Maven –> Update Project

方法一是全局生效,方法二只对本项目生效。

 改完之后,再次运行项目。发现又一个bug。

Server Tomcat v7.0 Server at localhost failed to start 

另类的Server Tomcat v7.0 Server at localhost failed to start解决_第3张图片

严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/rds-szrcb-web]]
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:188)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/rds-szrcb-web]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	... 6 more
Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2509)
	at java.lang.Class.getDeclaredFields(Class.java:1819)
	at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
	at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:139)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
	at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:417)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:891)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5522)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 6 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
	... 20 more

一月 29, 2019 9:24:38 上午 org.apache.catalina.core.ContainerBase startInternal
严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:188)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:756)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:693)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1127)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 6 more

一月 29, 2019 9:24:38 上午 org.apache.catalina.startup.Catalina start
严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:693)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:428)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:756)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:444)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1127)
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 11 more

于是,在网上进行寻找答案

bug1:

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/rds-szrcb-web]]

网上办法:

方法一:

1.把你工作空间文件夹下的如下路径打开:

.metadata.plugins\org.eclipse.core.resources

然后删除 .snap 文件,我在eclipse打开的情况下有这个.snap文件

2.把你工作空间文件夹下的如下路径打开:

.metadata.plugins\org.eclipse.wst.server.core

删除里面的temp*文件夹,删除后重启eclipse,tomcat就可以用了。

3.在server视图窗口中 把tomactt删除 然后再从新添加tomcat 之后再重新在启动你的web项目

4.打开任务管理器,找到javax.exe,右键结束进程,重启eclipse,tomcat就可以用了

方法二:

启动tomcat的时候报Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext。 虽然说你启动tomcat运行的项目可能只有一个,但是tomcat会对之前部署到它容器的工程,不知道有没有说错。报这个错,我发现我以前部署的工程影响到了现在的tomcat运行,我为了远程部署到linux tomcat中,对本地开发环境的工程进行了重命名。解决问题是删除之前部署的这个工程,重启即可。

或直接修改tomcat的server.xml文件的相关报错工程的Context接点删除。

方法三:

遇到这个问题的有很多种情况

第一种:web.xml问题,这个只要好好检查一下代码就可以解决网上大部分都是这个的问题

servlet-mapping中的

/

第二种:maven仓库下有的jar包下载不完全的问题错误信息中,我挑选重要的一段,我在项目中需要的也是这个问题,最后在不懈的努力下解决了,特写下这篇博客为后来遇到错误的人!

Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:139)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
... 12 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at sun.misc.IOUtils.readFully(IOUtils.java:65)
at java.util.jar.JarFile.getBytes(JarFile.java:425)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
at java.util.jar.JarFile.getManifest(JarFile.java:180)
at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:137)
... 13 more

出现这类问题首先我们查看哪些包没下载完全

第一步:再pom.xml文件右键run as选择Maven test看是否报错,从报错信息中看缺失的包,如果没有报错,则进入第二步

第二步:在pom.xml文件下右键,run as选择maven build,再Goals下输入以下命令:clean install -U

运行,会有很多报错信息,在这些错误信息中我找到了我缺失的包

[WARNING] 读取C:\Users\PC\.m2\repository\org\springframework\spring-jdbc\4.3.12.RELEASE\spring-jdbc-4.3.12.RELEASE.jar时出错; invalid LOC header (bad signature)
[WARNING] 读取C:\Users\PC\.m2\repository\org\springframework\spring-aspects\4.3.12.RELEASE\spring-aspects-4.3.12.RELEASE.jar时出错; invalid LOC header (bad signature)
[WARNING] 读取C:\Users\PC\.m2\repository\javax\servlet\jstl\1.2\jstl-1.2.jar时出错; invalid LOC header (bad signature)
[WARNING] 读取C:\Users\PC\.m2\repository\org\aspectj\aspectjweaver\1.8.9\aspectjweaver-1.8.9.jar时出错; invalid LOC header (bad signature)

显示有4个jar包没安装成功,我们只需要找到对应的目录,之后删掉那个文件夹

最后右键项目重新下载jar包

方法四:(上面几种方法对我都没有生效,这种方法之后,就可以了,很特殊)

最后发现,原因是编译发布的时候,找不到slf4j-api-1.6.2.jar,

Java Build Path里面有,而Deployment Assembly 没有。

另类的Server Tomcat v7.0 Server at localhost failed to start解决_第4张图片

将之前的Maven Dependencies去掉,重新添加,再运行,就可以了。

另类的Server Tomcat v7.0 Server at localhost failed to start解决_第5张图片

出现bug的时候,细心去发现,一步步走,总会找到的。

这个bug,对我来说也是几经周折,因为没有想到是在发布项目的时候,一些依赖没有被引进,导致怎么找都没找到,我也是很无语的。

 

你可能感兴趣的:(eclipse,bug)