解决Tomcat启动报Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

1.问题描述:

用Tomcat启动一个Maven项目时,启动不起来,报错如下:

03-Dec-2019 20:32:21.358 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/fendo-SSM]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1129)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1871)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@7822458a]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4969)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5099)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@58b14405]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:135)
	at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:707)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
	at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	... 16 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.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:111)
	... 17 more
 

 开始一直关注 “Failed to start component ”这个错误,网上找了很多方法,都不行,后来看到还有一个错误是“java.util.zip.ZipException: invalid LOC header (bad signature)”,然后从这里入手,发现是mvn下载的jar包邮问题导致的,下面给出解决办法

2.解决方法

 右键项目->Run as-> Maven test, 这里一定要注意:不要看到控制台打印出BUILD SUCCESS就认为是没问题的,要仔细看控制台的信息,如果出现

[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)

类似于如上的信息,就找到本地maven仓库的地址把出错的jar包删除掉,然后重新maven update一下,重新下载jar包,再启动就没问题了 

注意:如果运行maven test没出现的话,先maven clean一下再执行maven test

 

该错误通常是Tomcat服务器在启动过程中遇到的问题,表明无法启动指定的`StandardEngine`、`StandardHost`或`StandardContext`组件。这可能是由于多种原因导致的,以下是一些常见的原因和解决方法: 1. **配置文件错误**:检查`web.xml`文件是否有语法错误,确保所有的标签都正确闭合,没有缺失或多余的属性。 2. **依赖冲突**:检查是否有依赖库冲突,例如不同版本的同一个库在`WEB-INF/lib`目录中同时存在。解决方法是移除冲突的库或统一库的版本。 3. **类加载器问题**:Tomcat使用`Common ClassLoader`、`Standard ClassLoader`和`Single ClassLoader`三种类加载器,错误的配置可能导致类加载问题。检查`context.xml`或`server.xml`中的类加载器配置是否正确。 4. **JDK版本不兼容**:应用可能使用了某些在特定JDK版本中不可用的特性。确保Tomcat和应用使用的JDK版本兼容。 5. **资源锁定或权限问题**:确保Tomcat有权访问所有的应用资源,包括日志文件、临时目录等。 6. **内存不足**:Tomcat可能因为系统可用内存不足而无法启动。可以通过增加JVM堆内存来尝试解决问题,例如在`setenv.sh`或`setenv.bat`文件中设置`JAVA_OPTS`。 解决此类问题通常需要查看Tomcat的日志文件,如`catalina.out`,`localhost.log`等,这些文件通常包含了详细的错误信息和堆栈跟踪,能够提供更具体的错误原因。根据具体的错误信息来定位问题并采取相应的解决措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值