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

问题描述 投票:24回答:14

此问题已经在这里有了答案:

我试图创建/运行基本的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"]
java jsp tomcat classnotfoundexception
14个回答
8
投票

您必须已经将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>

0
投票

面对同样的问题。将JRE更改为正确的1.8版本,并进行maven清理并构建以解决该问题。您可能需要更改Project Facet并验证正确的路径。


0
投票
  1. 下载commons-logging-1.1.1.jar

0
投票

添加了AWS依赖关系,并出现此错误。当我从pom中删除它时,错误消失了。可能您的情况与此相同。

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

我在使用Eclipse时不时观察SEVERE: A child container failed during start消息。我的Eclipse工作区有几个项目。一些项目具有共同的外部依赖性。如果Maven存储库为空(或者我将新的依赖项添加到pom.xml文件中),则Eclipse开始将pom.xml中指定的库下载到Maven存储库中。 Eclipse对工作空间中的多个项目进行了[[并行

操作。可能会发生几个Eclipse线程将同一文件同时下载到Maven存储库中同一位置的情况。结果,此文件已损坏。因此,这是解决问题的方法。

0
投票

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


0
投票
我在我的项目中观察到类似的问题。当缺少类定义的jar粘贴到tomcat的lib目录中时,此问题已解决。

0
投票

我已经在我的项目观察到了类似的问题。当与缺少的类定义的jar粘贴到Tomcat的lib目录被解决的问题。


5
投票

我面临类似的问题,这是因为我在.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>

您的Web应用程序在/ WEB-INF / lib中具有servlet容器特定的库,例如servlet-api.jar文件。这是不对的。

全部删除。

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

如果您从其他品牌/版本的任意servlet容器中提供库,则会遇到此类问题,因为您的Web应用程序将无法在不同于这些版本的版本/版本的servlet容器中运行。源自。

如何解决:

在Eclipse中右键单击Eclipse属性中的项目-> Java构建路径->添加库->服务器运行时库-> Apache Tomcat

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>

删除名为Servers(或包含您的server.xml的Servers1,Servers2的项目,在程序包浏览器(工作区)中找到它] >>

从Eclipse中删除服务器:

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

从项目中删除服务器:

另外,请删除项目中的服务器(构建路径>配置路径> Java构建路径),然后再次添加。

现在您有了一个新的Server项目,该服务器的server.xml上没有多个上下文,仅删除server.xml中的重复路径即可解决此问题,但仍然可以通过启动该服务器(Apache Tomcat v7)启动服务器dint工作正常

而且我不知道这是否是一种好习惯,我是编程的入门者。

我尝试使用http servlet,当我写重复的@ WebServlet

时发现了这个问题,遇到了这个问题。删除或更改@ WebServlet
的值后,它就可以了。

1.Class

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

2.Class

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

检查您的JAVA_HOME是否设置为1.7或更低。因为tomcat 7与jdk 1.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>

3)Maven安装

4)运行服务器。

希望有帮助。

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

有时由于不兼容的Java版本和tomcat版本,会出现此问题。选择两者的兼容版本。

面对同样的问题。将JRE更改为正确的1.8版本,并进行maven清理并构建以解决该问题。您可能需要更改Project Facet并验证正确的路径。

  1. 下载commons-logging-1.1.1.jar
  • 转到您的项目,构建路径,配置构建路径,java构建路径。
  • 添加外部jar ..添加commons-logging-1.1.1.jar
  • 单击应用,确定
  • 转到项目,属性,部署程序集,单击添加,Java构建路径条目,接下来,选择公用日志记录jar,确定,应用,确定。。
  • 删除服务器,清理程序,添加服务器,运行项目。
  • 添加了AWS依赖关系,并出现此错误。当我从pom中删除它时,错误消失了。可能您的情况与此相同。

    此问题也可能是由于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。必须为每个项目
  • one-by-one,而不是并行运行命令;因此,您确保每次仅运行一个Maven实例。打开您的Eclipse。
  • 我在我的项目中观察到类似的问题。当缺少类定义的jar粘贴到tomcat的lib目录中时,此问题已解决。

  • 4
    投票

    您的Web应用程序在/ WEB-INF / lib中具有servlet容器特定的库,例如servlet-api.jar文件。这是不对的。


    2
    投票

    删除名为Servers(或包含您的server.xml的Servers1,Servers2的项目,在程序包浏览器(工作区)中找到它] >>

    从Eclipse中删除服务器:


    2
    投票

    我尝试使用http servlet,当我写重复的@ WebServlet

    时发现了这个问题,遇到了这个问题。删除或更改@ WebServlet

    1
    投票

    检查您的JAVA_HOME是否设置为1.7或更低。因为tomcat 7与jdk 1.8不兼容

    这对我有用


    1
    投票

    这对我有用:

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

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


    0
    投票

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


    0
    投票

    有时由于不兼容的Java版本和tomcat版本,会出现此问题。选择两者的兼容版本。

    © www.soinside.com 2019 - 2024. All rights reserved.