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

时间:2015-02-26 21:53:00

标签: java eclipse tomcat java-8

我在过去6到7个小时的努力中试图弄清楚我的Apache Tomcat服务器出了什么问题。在我的所有项目中,jdk版本已从1.6切换为1.8

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

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

现在,当我创建一个新的动态Web项目时,一切正常,我能够看到网页。但是如果我尝试访问那些jdk发生变化的旧项目的任何HTML,XHTML文件,这个org.apache.catalina.LifecycleException会继续弹出,服务器无法启动,因此这些重复的Context标签继续构建每次启动服务器时都会反复出现。

我的旧Web应用程序项目现在似乎都没有用。

  

java.util.concurrent.ExecutionException:       org.apache.catalina.LifecycleException:无法启动组件       [StandardEngine [卡塔利娜] .StandardHost [本地主机] .StandardContext       [/ EdBurns_ChrisSchalk]] .....       严重:子容器在启动时失败       java.util.concurrent.ExecutionException:       org.apache.catalina.LifecycleException:无法启动组件       [StandardEngine [卡塔利娜] .StandardHost [本地主机]]       ....       引起:java.lang.RuntimeException:意外的元素值类型       注释:0

如何防止在 server.xml 中反复建立这些上下文标记。 其次,如何将这些旧的Web项目再次恢复到工作状态?

12 个答案:

答案 0 :(得分:14)

我遇到了类似的错误,并按照以下步骤进行了修复: 1.在Servers项目(在Eclipse中添加Apache Tomcat Server时自行创建)下,打开server.xml 2.注释掉

<Context docBase=... />

答案 1 :(得分:9)

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

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

Screenshot for location:

答案 2 :(得分:4)

如果您没有使用基于注释的Servlet,请从servlet的开头删除注释 @WebServlet(“/ YourServletName”)。在删除此注释后,此注释会将映射与web.xml混淆,Tomcat服务器将正常工作。

答案 3 :(得分:1)

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

对我来说,以下操作有助于解决此问题。

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

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

可能导致此问题的问题之一是,当您忘记将/字符放在WebServlet批注@WebServlet(“ / example”)@WebServlet(“ example”)中时 我希望它对我有用。

答案 7 :(得分:0)

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

然后尝试将HttpServer::new(move || { App::new() .service(resource("/upload") // .guard(actix_web::guard::Header("Content-Type", "multipart/form-data")) .data(form.clone()) .route(post() .to(upload_multipart) ) ) }) 添加到您的web.xml文件中。因此,您的文件如下所示:

<absolute-ordering />

答案 8 :(得分:0)

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

尝试稍后再运行服务器

答案 9 :(得分:-1)

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

  

窗口&gt;&gt; ShowView&gt;&gt;服务器&gt;&gt; RightClick&gt;&gt;删除

然后再添加服务器,如前所述。

答案 10 :(得分:-1)

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

答案 11 :(得分:-3)

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