简体   繁体   中英

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

I am struggling for the past 6-7 hrs trying to figure out what went wrong with my Apache Tomcat Server. In all of my projects, the jdk version got switched to 1.6 from 1.8 .

To solve the version conflict , I verified whether compiled version and JVM of Tomcat version are same by taking help from here .

For multiple contexts with the same path error, I know i need to remove duplicate Context tags in server.xml . So, first I check in Servers project (which gets created itself when you add Apache Tomcat Server in Eclipse) and find none there. So, I delve deep into the directory(Eclipse WorkSpace) metadata\\.plugins\\org.eclipse.wst.server.core\\tmp3\\conf and removed the duplicate Context tags over there, with help taken from here .

Now when i create a new Dynamic Web Project, everything works fine and I am able to see the web page. But if I try to access any of the HTML, XHTML files of those old project in which the jdk got changed, this org.apache.catalina.LifecycleException continues to pop up and the server fails to start, and consequently these duplicate Context tags continues to build up again and again every time i start the server.

None of my old Web application projects seems to work now.

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext [/EdBurns_ChrisSchalk]]..... SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] .... Caused by: java.lang.RuntimeException: Unexpected element value kind in annotation: 0

How to prevent these context tags being build up again and again in server.xml . Secondly, how to get back those old web projects to working state again?

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

<Context docBase=... />

This will prevent multiple context tags to be created upon each request

1) Stop the server
2) Clean Tomcat's work directory

位置截图:

If you are not using annotation based Servlet then please remove annotation @WebServlet("/YourServletName") from the starting of the servlet. This annotation confuses the mapping with web.xml, after removing this annotation Tomcat server will work properly.

This seems to be an issue with local Maven repository. (ie .m2 folder) may be due to some corrupt .jar file

For me, the following actions helped to overcome this issue.

  1. On my local file system, I've deleted the directory .m2 (Maven local repository)

  2. In Eclipse , updated the project (select Maven > Update Project )

  3. Ran the app again on Tomcat server.

If you are using the following stack: Server Version: Apache Tomcat/9.0.21 Servlet Version: 4.0 JSP Version: 2.3

Then try adding <absolute-ordering /> to your web.xml file. So your file looks like this:

<?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>

  ......

Went through the various resources on the net but none of them helped then i deleted the existing server and added the same server again and now it is working fine and the steps are

Window>>ShowView>>Servers>>RightClick>>Delete

and then add the server again as you have added previously.

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

Just make sure build with correct web.xml configuration.I have update web.xml with tomcat configuration and it worked for me. Sample :-

 <?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") 我希望它有效,它对我有用。

Below solution worked for me: Navigate to Project->Clean.. Clean all the projects referenced by Tomcat server Refresh the project you're trying to run on Tomcat

Try to run the server afterwards

I think it is jar file version problem. I had the same issue and I fixed it by changing the commons-codec-1.6.jar file from the build path. Earlier I was using latest version 1.10. Gradually I decreased the versions and 1.6 version fixed my issue.

Go to the task manager, kill the java processes and turn the server back on. should work fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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