子容器在启动 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-api
in 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 期间失败 [重复]
bug:eclispe中启动Tomcat警告org.apache.catalina.LifecycleException: 子容器启动失败
org.apache.catalina.core.ContainerBase:子容器在启动期间失败