严重:子容器在启动期间失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException

SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException

我是 Eclipse、Tomcat 和 Web 服务开发的新手。我只是想学习基础知识。但是,不幸的是,我遇到了一个问题,即使按照互联网上各种链接的说明,我也无法解决。我尝试了以下方法:

PS:

此外,我在 运行 在服务器上安装项目时发布错误 :

> 
> Jul 25, 2016 6:27:32 PM
> org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING:
> [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting
> property 'source' to 'org.eclipse.jst.jee.server:RESTJerseyExample'
> did not find a matching property. Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Server
> version:        Apache Tomcat/8.0.36 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Server
> built:          Jun 9 2016 13:55:50 UTC Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Server
> number:         8.0.36.0 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: OS Name:  
> Mac OS X Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: OS
> Version:            10.11.5 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO:
> Architecture:          x86_64 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Java Home:
> /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre
> Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: JVM
> Version:           1.8.0_92-b14 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: JVM
> Vendor:            Oracle Corporation Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO:
> CATALINA_BASE:        
> /Users/easiembedded/Documents/workspace/Eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
> Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO:
> CATALINA_HOME:         /usr/local/apache-tomcat-8.0.36 Jul 25, 2016
> 6:27:32 PM org.apache.catalina.startup.VersionLoggerListener log INFO:
> Command line argument:
> -Dcatalina.base=/Users/easiembedded/Documents/workspace/Eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
> Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Command
> line argument: -Dcatalina.home=/usr/local/apache-tomcat-8.0.36 Jul 25,
> 2016 6:27:32 PM org.apache.catalina.startup.VersionLoggerListener log
> INFO: Command line argument:
> -Dwtp.deploy=/Users/easiembedded/Documents/workspace/Eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
> Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.VersionLoggerListener log INFO: Command
> line argument:
> -Djava.endorsed.dirs=/usr/local/apache-tomcat-8.0.36/endorsed Jul 25, 2016 6:27:32 PM org.apache.catalina.startup.VersionLoggerListener log
> INFO: Command line argument: -Dfile.encoding=UTF-8 Jul 25, 2016
> 6:27:32 PM org.apache.catalina.core.AprLifecycleListener
> lifecycleEvent INFO: The APR based Apache Tomcat Native library which
> allows optimal performance in production environments was not found on
> the java.library.path:
> /Users/easiembedded/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
> Jul 25, 2016 6:27:32 PM org.apache.coyote.AbstractProtocol init INFO:
> Initializing ProtocolHandler ["http-nio-8080"] Jul 25, 2016 6:27:32 PM
> org.apache.tomcat.util.net.NioSelectorPool getSharedSelector INFO:
> Using a shared selector for servlet write/read Jul 25, 2016 6:27:32 PM
> org.apache.coyote.AbstractProtocol init INFO: Initializing
> ProtocolHandler ["ajp-nio-8009"] Jul 25, 2016 6:27:32 PM
> org.apache.tomcat.util.net.NioSelectorPool getSharedSelector INFO:
> Using a shared selector for servlet write/read Jul 25, 2016 6:27:32 PM
> org.apache.catalina.startup.Catalina load INFO: Initialization
> processed in 486 ms Jul 25, 2016 6:27:32 PM
> org.apache.catalina.core.StandardService startInternal INFO: Starting
> service Catalina Jul 25, 2016 6:27:32 PM
> org.apache.catalina.core.StandardEngine startInternal INFO: Starting
> Servlet Engine: Apache Tomcat/8.0.36 Jul 25, 2016 6:27:32 PM
> org.apache.catalina.core.ContainerBase startInternal SEVERE: A child
> container failed during start java.util.concurrent.ExecutionException:
> org.apache.catalina.LifecycleException: Failed to start component
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RESTJerseyExample]]
>   at java.util.concurrent.FutureTask.report(FutureTask.java:122)  at
> java.util.concurrent.FutureTask.get(FutureTask.java:192)  at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:915)
>   at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
>   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
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/RESTJerseyExample]]
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
>   ... 6 more Caused by: org.apache.catalina.LifecycleException: Failed
> to start component
> [org.apache.catalina.webresources.StandardRoot@3aa1d912]  at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
>   at
> org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4958)
>   at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5088)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 6 more Caused by: org.apache.catalina.LifecycleException: Failed
> to initialize component
> [org.apache.catalina.webresources.JarResourceSet@25268c7e]    at
> org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:136)
>   at
> org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:699)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 9 more 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:102)
>   ... 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.access00(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
> 
> Jul 25, 2016 6:27:32 PM org.apache.catalina.core.ContainerBase
> startInternal SEVERE: 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:192)  at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:915)
>   at
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   at
> org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   at
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:787)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   at org.apache.catalina.startup.Catalina.start(Catalina.java:629)    at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)     at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)   at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) Caused
> by: org.apache.catalina.LifecycleException: Failed to start component
> [StandardEngine[Catalina].StandardHost[localhost]]    at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
>   at
> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
>   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: A child container failed
> during start  at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923)
>   at
> org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 6 more
> 
> Jul 25, 2016 6:27:32 PM org.apache.catalina.startup.Catalina start
> SEVERE: 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:153)
>   at org.apache.catalina.startup.Catalina.start(Catalina.java:629)    at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)     at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)   at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) Caused
> by: org.apache.catalina.LifecycleException: Failed to start component
> [StandardService[Catalina]]   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
>   at
> org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:787)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 7 more Caused by: org.apache.catalina.LifecycleException: Failed
> to start component [StandardEngine[Catalina]]     at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
>   at
> org.apache.catalina.core.StandardService.startInternal(StandardService.java:441)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 9 more Caused by: org.apache.catalina.LifecycleException: A child
> container failed during start     at
> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923)
>   at
> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
>   at
> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
>   ... 11 more
> 
> Jul 25, 2016 6:27:32 PM org.apache.coyote.AbstractProtocol pause INFO:
> Pausing ProtocolHandler ["http-nio-8080"] Jul 25, 2016 6:27:32 PM
> org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler
> ["ajp-nio-8009"] Jul 25, 2016 6:27:32 PM
> org.apache.catalina.core.StandardService stopInternal INFO: Stopping
> service Catalina Jul 25, 2016 6:27:32 PM
> org.apache.coyote.AbstractProtocol destroy INFO: Destroying
> ProtocolHandler ["http-nio-8080"] Jul 25, 2016 6:27:32 PM
> org.apache.coyote.AbstractProtocol destroy SEVERE: Failed to destroy
> end point associated with ProtocolHandler ["http-nio-8080"]
> java.lang.NullPointerException    at
> org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)
>   at
> org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)
>   at
> org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
>   at
> org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
>   at
> org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at
> org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at
> org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at org.apache.catalina.startup.Catalina.start(Catalina.java:633)    at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)     at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)   at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
> 
> Jul 25, 2016 6:27:32 PM org.apache.coyote.AbstractProtocol destroy
> INFO: Destroying ProtocolHandler ["ajp-nio-8009"] Jul 25, 2016 6:27:32
> PM org.apache.coyote.AbstractProtocol destroy SEVERE: Failed to
> destroy end point associated with ProtocolHandler ["ajp-nio-8009"]
> java.lang.NullPointerException    at
> org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:316)
>   at
> org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:492)
>   at
> org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:821)
>   at
> org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:534)
>   at
> org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at
> org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:589)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at
> org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:877)
>   at
> org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:297)
>   at org.apache.catalina.startup.Catalina.start(Catalina.java:633)    at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)     at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)   at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)

任何帮助将不胜感激。

谢谢!

问题似乎是:

无效的 LOC header(签名错误)

这通常是由于:

  • zip/jar 文件大于 4GB 且 java < 7
  • zip 损坏 files/jars

我在损坏的部署中看到过这样的错误

快速回答:

可能我在 web.xml 中使用了错误的 servlet class,这取决于所使用的球衣存档版本。我正在使用 Jersey 2.x 并且 web.xml 有以下 servlet url,这导致了错误:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

然后我将上面的内容替换为以下内容,从而解决了错误:

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

检查 servlet 标记内的 servlet 名称和 servlet 映射内的 servlet 名称。如果它们不相同,则可能会引发错误。这就是我的原因。