繁体   English   中英

org.apache.catalina.LifecycleException: 无法启动组件 [StandardServer[8005]] 子容器在启动过程中失败

[英]org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]A child container failed during start

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

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

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

现在,当我创建一个新的动态 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: 注释中的意外元素值种类: 0

如何防止这些上下文标记server.xml 中一次又一次地构建。 其次,如何让那些旧的 web 项目重新回到工作状态?

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

<Context docBase=... />

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

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

位置截图:

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

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

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

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

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

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

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

然后尝试将<absolute-ordering />到您的 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>

  ......

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

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

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

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

只需确保使用正确的 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>

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

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

之后尝试运行服务器

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM