Tomcat报org.apache.catalina.LifecycleException: Failed to start component [StandardEngine...

具体错误如下:

严重: ContainerBase.addChild: start:   
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test]]  
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)  
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)  
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)  
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)  
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:587)  
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1798)  
    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:745)  
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@2fa56038]  
    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@560533bd]  
    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:706)  
    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  

可能的原因:

1、如果是maven项目的话,可能是由于一些未知原因导致jar没下来来,因此我们可以

(1)清空本地maven仓库

(2)执行maven update重新下载jar包

2、可能由于web.xml的验证中

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

版本和约束跟tomcat对应的servlet api的版本不匹配。

 

解决办法:

项目-->properties-->project facets:

选择对应的Dynamic web module的版本。

修改时如果出现Cannot change version of project facet Dynamic Web Module to xx。xx为要修改成为的版本,如:3.0。

解决办法:

找到工作空间中的项目,打开项目找到.settings文件夹打开,编辑两个文件:

1.org.eclipse.jdt.core.prefs.prefs文件中的:

eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8

将1.8修改成对应的jdk版本

 

2.org.eclipse.wst.common.project.facet.core.xml文件中:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v8.5"/>
<fixed facet="wst.jsdt.web"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
<installed facet="jst.web" version="3.0"/>
</faceted-project>

将这个<installed facet="java" version="1.8"/>改成对应的java版本号,<installed facet="jst.web" version="3.1"/>改成对应的Dynamic Web module的版本号。

然后再打开project facet 查看是否修改。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值