簡體   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