【问题标题】:Apache Tomcat 8.0 Start failier on Eclipse MARS - JAVA EEEclipse MARS 上的 Apache Tomcat 8.0 启动失败 - JAVA EE
【发布时间】:2016-05-19 01:55:31
【问题描述】:

在我安装的 Eclipse 版本之后,我测试了名为“CrunchifySpringMVCTutorial”的 Spring Simple Application。这是一个 Maven 项目。它已成功构建,并且在使用 Apache tomcat 启动时出现如下错误。

Java 版本

  • java -版本
  • java版本“1.8.0_65”
  • Java(TM) SE 运行时环境(内部版本 1.8.0_65-b17)
  • Java HotSpot(TM) 64 位服务器 VM(内部版本 25.65-b01,混合模式)

Eclipse 版本

  • 面向 Web 开发人员的 Eclipse Java EE IDE。
  • 版本:Mars.1 版本 (4.5.1)
  • 版本号:20150924-1200

    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:917)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:760)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:625)
        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:497)
        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:154)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
        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:925)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:868)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
    
    Feb 09, 2016 11:46:19 AM 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:154)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:625)
        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:497)
        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:154)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:760)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
    Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more
    Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 11 more
    
    Feb 09, 2016 11:46:19 AM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["http-nio-8080"]
    Feb 09, 2016 11:46:19 AM org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["ajp-nio-8009"]
    Feb 09, 2016 11:46:19 AM org.apache.catalina.core.StandardService stopInternal
    INFO: Stopping service Catalina
    Feb 09, 2016 11:46:19 AM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["http-nio-8080"]
    Feb 09, 2016 11:46:19 AM 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:307)
        at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:482)
        at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:795)
        at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:531)
        at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:588)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:850)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        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:497)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
    
    Feb 09, 2016 11:46:19 AM org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["ajp-nio-8009"]
    Feb 09, 2016 11:46:19 AM 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:307)
        at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:482)
        at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:795)
        at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:531)
        at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1023)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:588)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:850)
        at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:305)
        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:497)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
    

    手动开机关机无误。

    [root@csc bin]# ./startup.sh 
    Using CATALINA_BASE:   /usr/local/apache-tomcat-8.0.15
    Using CATALINA_HOME:   /usr/local/apache-tomcat-8.0.15
    Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.15/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /usr/local/apache-tomcat-8.0.15/bin/bootstrap.jar:
    /usr/local/apache-tomcat-8.0.15/bin/tomcat-juli.jar
    Tomcat started.
    
    [root@csc bin]# ./shutdown.sh 
    Using CATALINA_BASE:   /usr/local/apache-tomcat-8.0.15
    Using CATALINA_HOME:   /usr/local/apache-tomcat-8.0.15
    Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.15/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:       /usr/local/apache-tomcat-8.0.15/bin/bootstrap.jar:
    /usr/local/apache-tomcat-8.0.15/bin/tomcat-juli.jar
    

【问题讨论】:

    标签: java eclipse apache spring-mvc tomcat


    【解决方案1】:

    我假设您没有以 root 身份运行 Eclipse。但是,您的“手动启动”代码意味着您的手动启动是以 root 身份执行的。这通常会导致许多工作文件、临时文件和其他文件归根用户所有,非特权用户不可写入。

    解决方法是更改​​文件的所有权,例如给您正在执行 eclipse 的用户 - 通常是您自己的帐户。现在文件已经属于 root,您也必须以 root 身份执行此操作:

    sudo chown --recursive yourusername /usr/local/apache-tomcat-8.0.15
    

    (当然,替换为 您的用户名

    永远不要以 root 身份运行像 tomcat 这样的网络服务器 - 你总是希望它以非特权用户身份运行。否则,tomcat 上的任何安全问题都可能意味着攻击者可以立即获得 root 访问权限

    【讨论】:

    • 我像上面一样改变了,但我仍然得到相同的警告,如下Feb 09, 2016 4:14:33 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:CrunchifySpringMVCTutorial' did not find a matching property. Feb 09, 2016 4:14:33 PM org.apache.catalina.startup.VersionLoggerListener log@Olaf Kock
    • ...但是现在开始?这将解决上述问题。警告就是:警告。您可以轻松地使用它运行(现在)或手动使用源路径配置调试器。至少这是与您上面的问题无关的问题。
    • 部署tomcat服务器后自动关闭出现上述错误
    • 我不明白。请给出具体步骤:你在做什么,发生了什么?启动时tomcat会自动关闭吗?您是指问题中的“上述错误”还是您对我的回答的评论(这只是一个警告,通常在启动期间出现,而不是关闭)
    • 无论你的应用程序做什么 - 似乎你应该调试你的应用程序部署时发生的事情。看起来它与日食无关。您可能希望在调试器中运行它并在发生 LifecycleException 时停止 - 看看您是否可以找出引发它的条件。有趣的是没有根本原因 - 或者您是否缩短了日志?
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2015-06-02
    • 2014-03-24
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多