在启动java.util.concurrent.ExecutionException期间,子容器失败

在启动java.util.concurrent.ExecutionException期间,子容器失败,java,jsp,tomcat,classnotfoundexception,Java,Jsp,Tomcat,Classnotfoundexception,我试图创建/运行一个基本JSP,但遇到了以下错误。我看到其他人也有类似的问题,但是,我还没有找到(或正确实施)解决当前问题的方法。任何帮助都将不胜感激 SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[C

我试图创建/运行一个基本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"]

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

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

其他信息

如果您使用maven进行打包,那么只需添加带有依赖项的
提供的
标记,maven将确保不在最终的war文件中打包它。差不多

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

..
...
...
假如

您的webapp在其/WEB-INF/lib中具有特定于servletcontainer的库,如servlet-api.jar文件。这是不对的

把它们全部去掉

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

如果您从不同品牌/版本的任意servletcontainer提供库,您将遇到此类问题,因为您的Web应用程序将无法在不同品牌/版本的servletcontainer上运行,而不是这些库的来源

如何解决: 日蚀 右键单击eclipse属性->Java构建路径->添加库->服务器运行库->ApacheTomcat中的项目

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

javax.servlet
servlet api
${default.javax.servlet.version}
假如
javax.servlet.jsp
jsp api
${default.javax.servlet.jsp.version}
假如

我在类似的日志中遇到了类似的问题。我在ApacheTomcat7上使用JDK1.6。将java_home设置为1.7解决了问题。

检查java_home是否设置为1.7或更低。因为Tomcat7与JDK1.8不兼容


这对我有用

这就是对我有用的东西:

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>

公用记录
公用记录
1.2
3) Maven安装

4) 运行服务器


希望对您有所帮助。

有时由于java版本和tomcat版本不兼容而出现此问题。请选择两者的兼容版本

删除名为Servers的项目(或包含server.xml的Servers1、Servers2),在包资源管理器(工作区)中找到它

从Eclipse中删除服务器: 转到“窗口>首选项>服务器>运行时环境”,在这里从eclipse中删除您正在使用的服务器并再次添加它(这样做将在eclipse中创建一个新的服务器项目文件夹)

从项目中删除服务器: 还要删除项目中的服务器(构建路径>配置路径>Java构建路径),然后再次添加

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


我不知道这是否是一个好的做法,我是编程的新手。

面临同样的问题。将JRE更改为正确的1.8版本,并执行maven清理和构建以解决问题。您可能需要更改项目方面并验证正确的路径。

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

在.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>

注销
tpc.注销
注销
/index1.jsp
  • 下载commons-logging-1.1.1.jar
  • 转到您的项目,构建路径,配置构建路径,java构建路径
  • 添加外部罐子。。添加commons-logging-1.1.1.jar
  • 单击应用,确定
  • 转到project,properties,Deployment Assembly,单击add,Java构建路径条目,接下来,选择commons logging jar,ok,,apply,ok
  • 删除服务器、清理项目、添加服务器、运行项目

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

    1.班级

    @WebServlet("/display")
    public class MyFirst extends HttpServlet {
    
    @WebServlet("/display")
    public class MySecond extends HttpServlet {
    
    2.班级

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

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

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

    我观察到
    严重:在使用Eclipse时,在start
    消息中不时出现子容器失败的情况。我的Eclipse工作区有几个项目。有些项目具有共同的外部依赖关系。如果Maven存储库为空(或者我将新的依赖项添加到
    pom.xml
    文件中),Eclipse将开始将
    pom.xml
    中指定的库下载到Maven存储库中。Eclipse对工作区中的多个项目并行执行此操作。可能会有几个Eclipse线程同时将同一文件下载到Maven存储库中的同一位置。因此,此文件将被损坏

    所以