【问题标题】:org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]A child container failed during startorg.apache.catalina.LifecycleException: 无法启动组件 [StandardServer[8005]] 子容器在启动期间失败
【发布时间】:2015-04-29 11:32:00
【问题描述】:

在过去的 6-7 个小时里,我一直在努力找出我的 Apache Tomcat 服务器出了什么问题。在我所有的项目中,jdk 版本从1.8 切换到1.6

为了解决version conflict的问题,我通过here的帮助验证了Tomcat版本的编译版本和JVM是否相同。

对于具有相同路径错误的多个上下文,我知道我需要删除server.xml 中的重复上下文标签。因此,首先我检查了 Servers 项目(当您在 Eclipse 中添加 Apache Tomcat 服务器时,它会自行创建)并在那里找不到。所以,我深入研究了目录(Eclipse WorkSpace)metadata\.plugins\org.eclipse.wst.server.core\tmp3\conf,并在here 的帮助下删除了那里重复的上下文标签。

现在,当我创建一个新的动态 Web 项目时,一切正常,我可以看到该网页。但是,如果我尝试访问其中 jdk 已更改的旧项目的任何 HTML、XHTML 文件,则会继续弹出此 org.apache.catalina.LifecycleException 并且服务器无法启动,因此这些重复的 Context 标记继续再次建立每次我启动服务器时都会再次出现。

我的旧 Web 应用程序项目现在似乎都不工作了。

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext [/EdBurns_ChrisSchalk]]...... 严重:子容器在启动期间失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost]] …… 引起:java.lang.RuntimeException: Unexpected element value kind in 注释:0

如何防止这些上下文标签server.xml中一次又一次地建立。 其次,如何让那些旧的 web 项目恢复到工作状态?

【问题讨论】:

标签: java eclipse tomcat java-8


【解决方案1】:

我遇到了类似的错误,并通过以下步骤修复了它: 1. 在 Servers 项目下(当您在 Eclipse 中添加 Apache Tomcat 服务器时自行创建),打开 server.xml 2. 注释掉该行

<Context docBase=... />

【讨论】:

  • @sofian 评论这个元素也解决了我的错误,但是当我启动我的应用程序时它似乎不起作用,所以评论这个元素我猜是不对的
  • 我知道它会停止项目,但肯定会给出一条出路——这应该是一个可以接受的答案。谢谢老兄。
【解决方案2】:

这将防止在每次请求时创建多个上下文标签

1) 停止服务器
2) 清理 Tomcat 的工作目录

【讨论】:

  • 它对我有用,但我从中删除了同步应用程序。
  • 这不是正确的解决方案。这可能在某些环境下有效,但不是全部。
  • 是的,当我使用 clean 命令时,这对我也有用...谢谢。
  • 这不是一个始终有效的解决方案。即使遵循相同的错误步骤,它也对我不起作用。
  • 我正在使用来自 xampp 的 tomcat
【解决方案3】:

如果您没有使用基于注解的 Servlet,请从 Servlet 的开头删除注解 @WebServlet("/YourServletName")。这个注解混淆了与web.xml的映射,去掉这个注解之后Tomcat服务器就可以正常工作了。

【讨论】:

    【解决方案4】:

    这似乎是本地 Maven 存储库的问题。 (即 .m2 文件夹)可能是由于某些损坏的 .jar 文件

    对我来说,以下措施有助于克服这个问题。

    1. 在我的本地文件系统上,我删除了目录 .m2(Maven 本地存储库)

    2. Eclipse 中,更新项目(选择 Maven > 更新项目

    3. 在 Tomcat 服务器上再次运行应用程序。

    【讨论】:

      【解决方案5】:

      如果您使用以下堆栈: 服务器版本:Apache Tomcat/9.0.21 Servlet 版本:4.0 JSP 版本:2.3

      然后尝试将&lt;absolute-ordering /&gt; 添加到您的 web.xml 文件中。所以你的文件看起来像这样:

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
        <display-name>spring-mvc-crud-demo</display-name>
      
        <absolute-ordering />
      
        <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>index.html</welcome-file>
        </welcome-file-list>
      
        ......
      

      【讨论】:

        【解决方案6】:

        浏览了网上的各种资源,但没有一个有帮助,然后我删除了现有的服务器并再次添加了相同的服务器,现在它工作正常,步骤是

        窗口>>显示视图>>服务器>>右键>>删除

        然后像之前添加的那样再次添加服务器。

        【讨论】:

          【解决方案7】:

          在我的情况下,jdk目录下jre/lib/ext中的servlet-api.jar文件与tomcat中的servlet-api.jar文件冲突,删除了jre/lib/ext中的servlet-api.jar jdk目录可以解决问题。

          【讨论】:

            【解决方案8】:

            只需确保使用正确的 web.xml 配置进行构建。我已使用 tomcat 配置更新 web.xml,它对我有用。 示例:-

            <?xml version="1.0" encoding="UTF-8"?>
            <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
            	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
            	id="WebApp_ID" version="2.5">
            	<display-name>simulator</display-name>
            	<description>simulator app</description>
            
            
                <!-- File upload  -->
                <welcome-file-list>
                    <welcome-file>index.html</welcome-file>
                </welcome-file-list>
             <!-- excel simulation -->
                <display-name>simulator</display-name>
                <description>simulator app</description>
                <!-- File upload  -->
                <welcome-file-list>
                    <welcome-file>InsertPage.html</welcome-file>
                </welcome-file-list>
                <servlet>
                    <servlet-name>FileUploadServlet</servlet-name>
                    <servlet-class>clari5.excel.FileUploadServlet</servlet-class>
                    <load-on-startup>1</load-on-startup>
                </servlet>
                <servlet-mapping>
                    <servlet-name>FileUploadServlet</servlet-name>
                    <url-pattern>/excelSimulator/FileUploadServlet</url-pattern>
                </servlet-mapping>
            
            
            
            </web-app>

            【讨论】:

              【解决方案9】:

              可能导致这种情况的一个问题是当您忘记将 / 字符放在 WebServlet 注释中时 @WebServlet("/example") @WebServlet("example") 我希望它有效,它对我有用。

              【讨论】:

                【解决方案10】:

                以下解决方案对我有用: 导航到项目->清理.. 清理Tomcat服务器引用的所有项目 刷新您尝试在 Tomcat 上运行的项目

                之后尝试运行服务器

                【讨论】:

                  【解决方案11】:

                  我认为是jar文件版本问题。我遇到了同样的问题,我通过更改构建路径中的 commons-codec-1.6.jar 文件来修复它。早些时候我使用的是最新版本 1.10。逐渐我减少了版本,1.6 版本解决了我的问题。

                  【讨论】:

                    【解决方案12】:

                    进入任务管理器,杀死java进程并重新打开服务器。 应该可以正常工作。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-12-29
                      • 2016-11-28
                      • 1970-01-01
                      • 2014-01-17
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-01-14
                      相关资源
                      最近更新 更多