子容器在启动 java.util.concurrent.ExecutionException 期间失败 [重复]

Posted

技术标签:

【中文标题】子容器在启动 java.util.concurrent.ExecutionException 期间失败 [重复]【英文标题】:A child container failed during start java.util.concurrent.ExecutionException [duplicate] 【发布时间】:2015-03-22 00:48:11 【问题描述】:

我尝试创建/运行一个基本的 JSP 并遇到以下错误。我看到其他人也有类似的问题,但是,我还没有找到(或正确实施)手头问题的解决方案。任何帮助将不胜感激!

    SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SimpleServletProject]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 6 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2693)
    at java.lang.Class.getDeclaredMethods(Class.java:1967)
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:127)
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:287)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 20 more

Jan 22, 2015 9:04:06 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more

Jan 22, 2015 9:04:06 PM org.apache.catalina.startup.Catalina start
SEVERE: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:739)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more

Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
Jan 22, 2015 9:04:06 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
Jan 22, 2015 9:04:06 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

【问题讨论】:

你用的tomcat和servlet-api是什么版本的?没有部署您的应用程序,容器是否正确启动?另外,检查servlet-apiin lib 文件夹。 总而言之,当servlet-api 等特定于服务器的库放在/WEB-INF/lib 文件夹中时,可能会引发此异常java.lang.ClassNotFoundException: HttpServletRequest。您是否手动将此类依赖项添加到您的项目中。 【参考方案1】:

我遇到了类似的问题,这是因为我在 .java 文件和 web.xml 中编写了 WebServlet Path。从任何一个位置删除它对我来说都很好。

在.java文件中

@WebServlet("/index1.jsp")

在 web.xml 中

<servlet>
    <servlet-name>Logout</servlet-name>
    <servlet-class>tpc.Logout</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Logout</servlet-name>
    <url-pattern>/index1.jsp</url-pattern>
</servlet-mapping>

【讨论】:

这对我来说是个问题。谢谢【参考方案2】:

您必须将servlet-api.jar 与您的war 文件中的其他库一起打包。您可以通过打开您的 war 文件并导航到 WEB-INF/lib 文件夹来验证这一点。

理想情况下,您不应提供 servlet-api jar。容器(在您的情况下为 Tomcat)负责在部署时将其提供给您的应用程序。如果您也尝试提供它,那么由于版本不匹配等问题会出现问题。最佳做法是避免打包它。从 WEB-INF/lib 中删除它。

其他信息

如果您使用 maven 进行打包,则只需添加带有依赖项的 provided 标签,maven 将确保不会将其打包到最终的 war 文件中。类似的东西

<dependency>
    <artifact>..
    <group> ...
    <version> ...
    <scope>provided</scope>
</<dependency>

【讨论】:

实际上,错误已解决,但我遇到的问题是由以下原因引起的:com.sun.jersey.api.MessageException: A message body writer for Java class com.db.conec.Track,和Java 类型类 com.db.conec.Track,未找到 MIME 媒体类型 text/plain【参考方案3】:

您的 web 应用程序在其 /WEB-INF/lib 中有特定于 servletcontainer 的库,例如 servlet-api.jar 文件。这是不对的。

全部删除。

/WEB-INF/lib 应该只包含特定于 webapp 的库,而不是 servletcontainer。 servletcontainer(如 Tomcat)应该已经提供了 servletcontainer 特定的库。

如果您从不同 make/version 的任意 servletcontainer 提供库,您将遇到此类问题,因为您的 web 应用程序将无法在与这些库不同的 make/version 的 servletcontainer 上运行起源于。

如何解决: 在日食中 在eclipse Properties中右键项目-> Java Build Path -> Add library -> Server Runtime Library -> Apache Tomcat

我是 Maven 项目:-

在 pom.xml 文件中添加以下行

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>$default.javax.servlet.version</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>$default.javax.servlet.jsp.version</version>
            <scope>provided</scope>
        </dependency>

【讨论】:

这个答案是从***.com/a/10556306/7155133复制过来的【参考方案4】:

删除名为Servers的项目(或Servers1、Servers2,其中包含你的server.xml),在Package Explorer(workspace)中找到它

从 Eclipse 中删除服务器: 转到 Window > Preferences > Server > Runtime Environment,在这里从 eclipse 中删除您正在使用的服务器并再次添加它(这样做将在 Eclipse 中创建一个新的 Server 项目文件夹),

从项目中删除服务器: 同时删除项目中的服务器(构建路径>配置路径> Java构建路径)并再次添加。

现在你有了一个新的服务器项目,它的 server.xml 上没有多个上下文,只删除 server.xml 中的重复路径解决了现有问题,但仍然服务器启动,通过这样做服务器启动(Apache Tomcat v7)并且工作正常

而且我不知道这是否是好习惯,我是编程初学者。

【讨论】:

我只是在 pom.xml 中添加和删除一些内容并替换为原始文件,突然我的工作区变得疯狂.. 完成这一步之后.. 我设法启动服务器...谢谢伙计。 【参考方案5】:

我尝试使用 http servlet,当我编写重复的 @WebServlet 时发现了这个问题,我遇到了这个问题。删除或更改 @WebServlet 值后,它是工作。

1.类

@WebServlet("/display")
public class MyFirst extends HttpServlet 

2.类

@WebServlet("/display")
public class MySecond extends HttpServlet 

【讨论】:

【参考方案6】:

检查您的 JAVA_HOME 是否设置为 1.7 或以下。因为tomcat 7和jdk 1.8不兼容

这对我有用

【讨论】:

【参考方案7】:

这对我有用:

1) 将 commons-logging.jar 添加到 WEB-INF/lib 文件夹

2) 将此 jar 添加为 maven 依赖项,例如将此添加到 pom.xml:

 <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
 </dependency>

3) Maven 安装

4) 运行服务器。

希望对你有帮助。

【讨论】:

【参考方案8】:

我遇到了类似日志的类似问题。我使用 JDK 1.6 和 apache tomcat 7。将 java_home 设置为 1.7 解决了这个问题。

【讨论】:

【参考方案9】:

有时会出现这个问题是由于java版本和tomcat版本不兼容。选择两者兼容的版本。

【讨论】:

【参考方案10】:

面临同样的问题。将 JRE 更改为正确的 1.8 版本并执行 maven clean and build 解决问题。您可能需要更改 Project Facet 并验证正确的路径。

【讨论】:

【参考方案11】:
    下载commons-logging-1.1.1.jar。 转到您的项目,构建路径,配置构建路径,java 构建路径。 添加外部 jars.. 添加 commons-logging-1.1.1.jar 点击应用,ok 进入项目、属性、部署程序集,点击添加,Java构建路径条目,下一步,选择commons logging jar,ok,,apply,ok.. 删除服务器,清理您的项目,添加服务器,运行您的项目。

【讨论】:

我有同样的问题,但你的答案没有解决我【参考方案12】:

添加了 AWS 依赖项并出现此错误。当我从 pom 中删除它时,错误就消失了。可能你也有同样的情况。

【讨论】:

【参考方案13】:

这个问题也可能是由损坏的 Maven 存储库引起的。

在使用 Eclipse 时,我不时会看到 SEVERE: A child container failed during start 消息。我的 Eclipse 工作区有几个项目。一些项目有共同的外部依赖。如果 Maven 存储库为空(或者我将新的依赖项添加到 pom.xml 文件中),Eclipse 开始将 pom.xml 中指定的库下载到 Maven 存储库中。 Eclipse 对工作区中的多个项目并行执行此操作。多个 Eclipse 线程可能会同时将同一个文件下载到 Maven 存储库中的同一个位置。因此,此文件已损坏。

所以,这就是您可以解决问题的方法。

    关闭 Eclipse。 如果您知道 Maven 存储库中哪个特定 jar 文件损坏,请删除该文件。 如果您不知道 Maven 存储库中的哪个文件损坏,请删除整个存储库 (rm -rf $HOME/.m2)。 对于每个项目,在命令行中运行mvn package。对每个项目一个接一个地运行命令很重要,而不是并行运行;因此,您可以确保每次只运行一个 Maven 实例。 打开您的 Eclipse。

【讨论】:

【参考方案14】:

我在我的项目中发现了类似的问题。将缺少类定义的jar粘贴到tomcat的lib目录后问题解决。

【讨论】:

以上是关于子容器在启动 java.util.concurrent.ExecutionException 期间失败 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

子容器在启动 java.util.concurrent.ExecutionException 期间失败 [重复]

Crashlytics Fabric:无法执行任务

bug:eclispe中启动Tomcat警告org.apache.catalina.LifecycleException: 子容器启动失败

org.apache.catalina.core.ContainerBase:子容器在启动期间失败

为什么jmap -histo的结果与jmap -dump不同

8Dockerfile详解