运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动

Posted 佳宁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动相关的知识,希望对你有一定的参考价值。

作为Maven小白,今天这问题困扰了我好久,经过多次在网上查询,终于找到了原因。明明一个小问题却耗费很多时间,着实不应该,所以必须记录一下。

 

报错信息如下:

 

对话框:

技术分享图片

 

控制台:

 

 

[html] view plain copy
 
  1. <span style="font-size:14px;"><span style="color:#ff0000;">严重: A child container failed during start  
  2. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcController]]  
  3.     at java.util.concurrent.FutureTask.report(Unknown Source)  
  4.     at java.util.concurrent.FutureTask.get(Unknown Source)  
  5.     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)  
  6.     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)  
  7.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  8.     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)  
  9.     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)  
  10.     at java.util.concurrent.FutureTask.run(Unknown Source)  
  11.     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
  12.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
  13.     at java.lang.Thread.run(Unknown Source)  
  14. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvcController]]  
  15.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  16.     ... 6 more  
  17. Caused by: org.apache.catalina.LifecycleException: Failed to start component [[email protected]]  
  18.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  19.     at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4909)  
  20.     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5039)  
  21.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  22.     ... 6 more  
  23. Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [[email protected]]  
  24.     at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)  
  25.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)  
  26.     at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:699)  
  27.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  28.     ... 9 more  
  29. Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)  
  30.     at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:96)  
  31.     at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)  
  32.     ... 12 more  
  33. Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)  
  34.     at java.util.zip.ZipFile.read(Native Method)  
  35.     at java.util.zip.ZipFile.access$1400(Unknown Source)  
  36.     at java.util.zip.ZipFile$ZipFileInputStream.read(Unknown Source)  
  37.     at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(Unknown Source)  
  38.     at java.util.zip.InflaterInputStream.read(Unknown Source)  
  39.     at sun.misc.IOUtils.readFully(Unknown Source)  
  40.     at java.util.jar.JarFile.getBytes(Unknown Source)  
  41.     at java.util.jar.JarFile.getManifestFromReference(Unknown Source)  
  42.     at java.util.jar.JarFile.getManifest(Unknown Source)  
  43.     at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:94)  
  44.     ... 13 more  
  45.   
  46. 十一月 29, 2016 2:54:19 下午 org.apache.catalina.core.ContainerBase startInternal  
  47. 严重: A child container failed during start  
  48. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]  
  49.     at java.util.concurrent.FutureTask.report(Unknown Source)  
  50.     at java.util.concurrent.FutureTask.get(Unknown Source)  
  51.     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)  
  52.     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)  
  53.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  54.     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)  
  55.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  56.     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)  
  57.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  58.     at org.apache.catalina.startup.Catalina.start(Catalina.java:625)  
  59.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  60.     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
  61.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
  62.     at java.lang.reflect.Method.invoke(Unknown Source)  
  63.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)  
  64.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)  
  65. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]  
  66.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  67.     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)  
  68.     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)  
  69.     at java.util.concurrent.FutureTask.run(Unknown Source)  
  70.     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)  
  71.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)  
  72.     at java.lang.Thread.run(Unknown Source)  
  73. Caused by: org.apache.catalina.LifecycleException: A child container failed during start  
  74.     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:924)  
  75.     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)  
  76.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  77.     ... 6 more  
  78.   
  79. 十一月 29, 2016 2:54:19 下午 org.apache.catalina.startup.Catalina start  
  80. 严重: The required Server component failed to start so Tomcat is unable to start.  
  81. org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]  
  82.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  83.     at org.apache.catalina.startup.Catalina.start(Catalina.java:625)  
  84.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  85.     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
  86.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
  87.     at java.lang.reflect.Method.invoke(Unknown Source)  
  88.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)  
  89.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)  
  90. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]  
  91.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  92.     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)  
  93.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  94.     ... 7 more  
  95. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]  
  96.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)  
  97.     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)  
  98.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  99.     ... 9 more  
  100. Caused by: org.apache.catalina.LifecycleException: A child container failed during start  
  101.     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:924)  
  102.     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)  
  103.     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)  
  104.     ... 11 more  
  105.   
  106. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol pause  
  107. 信息: Pausing ProtocolHandler ["http-nio-8080"]  
  108. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol pause  
  109. 信息: Pausing ProtocolHandler ["ajp-nio-8009"]  
  110. 十一月 29, 2016 2:54:19 下午 org.apache.catalina.core.StandardService stopInternal  
  111. 信息: Stopping service Catalina  
  112. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol destroy  
  113. 信息: Destroying ProtocolHandler ["http-nio-8080"]  
  114. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol destroy  
  115. 严重: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]  
  116. java.lang.NullPointerException  
  117.     at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:305)  
  118.     at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:481)  
  119.     at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:823)  
  120.     at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:533)  
  121.     at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)  
  122.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  123.     at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:588)  
  124.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  125.     at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:859)  
  126.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  127.     at org.apache.catalina.startup.Catalina.start(Catalina.java:629)  
  128.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  129.     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
  130.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
  131.     at java.lang.reflect.Method.invoke(Unknown Source)  
  132.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)  
  133.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)  
  134.   
  135. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol destroy  
  136. 信息: Destroying ProtocolHandler ["ajp-nio-8009"]  
  137. 十一月 29, 2016 2:54:19 下午 org.apache.coyote.AbstractProtocol destroy  
  138. 严重: Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"]  
  139. java.lang.NullPointerException  
  140.     at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:305)  
  141.     at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:481)  
  142.     at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:823)  
  143.     at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:533)  
  144.     at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)  
  145.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  146.     at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:588)  
  147.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  148.     at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:859)  
  149.     at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)  
  150.     at org.apache.catalina.startup.Catalina.start(Catalina.java:629)  
  151.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  152.     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
  153.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
  154.     at java.lang.reflect.Method.invoke(Unknown Source)  
  155.     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)  
  156.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)</span>  
  157. </span>  

 

  原因:

提取错误的关键信息

技术分享图片

说明Jar包出现了问题。

 

那么接下来就要找哪个jar包出现了问题:

方法1、可通过右击项目名 ->  Run as -> Maven test ,这时控制台会报哪个jar包出错。 (也可以打开DOS命令窗口,切换至项目目录,运行mvn test命令,和Eclipse的控制台输出信息一致)

 

方法2、如果方法1未出现任何错误信息,那么就使用笨办法。打开项目中的pom.xml文件,在自己的Maven本地仓库去查找pom.xml文件中每一个dependency节点所对应的jar包版本。一个一个对比,看看是否都正常下载。 

 

这里,我找到了本地仓库中出现的jar包错误:

技术分享图片

 

 

解决方法:

既然jar包未下载成功,那么重新下载就行了。如果重新下载还是不能成功,那就在网上下载同版本的拷贝进去。

 

 

删除掉该jar包所在目录下的所有文件后,重新运行maven install。

技术分享图片

 

 

这时,可看到jar包已正常下载。

技术分享图片

 

 

 

再次运行项目,右击项目 -> Run as -> Run on server 。可以发现,项目能正常运行了。

以上是关于运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动的主要内容,如果未能解决你的问题,请参考以下文章

maven编译时出现读取XXX时出错invalid LOC header (bad signature)

部署 Maven 项目抛出 java.util.zip.ZipException: invalid LOC header (bad signature)

使用eclipse对maven项目打包时,报 invalid LOC header (bad signature)异常处理

运行 React App 时出现“Invalid Host Header”

invalid LOC header (bad signature)

从命令行运行声纳分析时出现链接错误(maven 项目)