29

我刚得到tomcat 7.0.27。我一直保持启动tomcat 45sec的时间。在tomcat上使用旧版本也可以正常运行。但运行它我得到以下错误:

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/VotingApp]]
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/VotingApp]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 7 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.getDeclaredMethods(Class.java:1791)
    at org.apache.catalina.startup.WebAnnotationSet.getDeclaredMethods(WebAnnotationSet.java:470)
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:275)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:137)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:381)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:858)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
Caused by: java.lang.ClassNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    ... 21 more
May 11, 2012 10:09:21 AM 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$Sync.innerGet(FutureTask.java:222)
    at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
    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:732)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:675)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
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:1566)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1136)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more
May 11, 2012 10:09:21 AM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.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:675)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)
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:732)
    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:1136)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 11 more
May 11, 2012 10:09:21 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 561 ms

我该如何解决该错误。我查看了一些类似的帖子,但没有发现它有用。

4

17 回答 17

46

您的 Web 应用程序具有特定servlet-api.jar于 servlet 容器的库,例如其/WEB-INF/lib. 这是不对的。将它们全部删除。应该只包含特定于 Web 应用程序的/WEB-INF/lib库,而不是 servlet 容器。servlet 容器(如 Tomcat)应该已经提供了 servlet 容器特定的库。如果您从具有不同 make/version 的任意 servlet 容器提供库,您将遇到此类问题,因为您的 Web 应用程序将无法在与这些库不同的 make/version 的 servlet 容器上运行来源于。

当他们遇到编译时错误时,这是​​一个非常常见的初学者错误,因为他们没有正确设置他们的 IDE 项目。另请参阅如何在我的 Eclipse 项目中导入 javax.servlet API?

于 2012-05-11T17:55:49.733 回答
19

Caused by: java.lang.NoClassDefFoundError: HttpServletRequest

上述问题可能是因为javax找不到库。

我解决了同样的问题:右键
单击Eclipse中的项目Properties→→→→→Java Build PathLibrariesAdd library...Server RuntimeApache Tomcat

于 2013-05-29T12:51:47.170 回答
4

在您的 pom.xml 中添加以下内容。它对我有用。

     <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
     </dependency>
于 2015-11-02T07:36:57.773 回答
3

我在应用程序的 WEB-INF/lib 目录(或那里的任何其他 jar)中没有 servlet-api.jar。问题是在 WEB-INF/web.xml 我有这个......

    ...
    <servlet>
      <servlet-name>MyServlet</servlet-name>
      <servlet-class>com.bizooka.net.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>MyServlet</servlet-name>
      <url-pattern>/MyServlet</url-pattern>
    </servlet-mapping>
    ...

...根据教程。删除它仍然允许 servlet 运行,并且没有收到错误。

于 2015-05-24T20:13:10.037 回答
0

我有同样的问题,原因是缺少 commons-logging-1.2.jar

我将它添加到lib文件夹中,然后我的 Apache Tomcat 7 服务器执行没有问题。

于 2017-06-15T11:50:09.817 回答
0

您应该在 WEB-INF/lib 文件夹中添加 servler-api.jar 文件

于 2016-06-29T07:30:33.730 回答
0

我得到了同样的错误

Caused by: org.apache.catalina.LifecycleException: A child container failed during start

我从 eclipse 工作空间中删除了项目,删除了项目的 .settings 文件夹并重新导入到 eclipse 中。为我做了诀窍。

于 2018-03-24T15:25:51.077 回答
0

当我尝试使用第一个 Spring MVC webapp 时,我确实遇到了同样的问题。我所做的是从链接(下载 spring 框架)下载了 jar 文件。在 zip 提取文件夹上的 jar 中,我预计使用的 jar 文件是

  • org.springframework.asm-3.0.1.RELEASE-A.jar

  • org.springframework.beans-3.0.1.RELEASE-A.jar

  • org.springframework.context-3.0.1.RELEASE-A.jar

  • org.springframework.core-3.0.1.RELEASE-A.jar

  • org.springframework.expression-3.0.1.RELEASE-A.jar

  • org.springframework.web.servlet-3.0.1.RELEASE-A.jar

  • org.springframework.web-3.0.1.RELEASE-A.jar

但是当我得到错误,寻找解决方案时,我发现我也需要以下 jar。

  • commons-logging-1.0.4.jar

  • jstl-1.2.jar

然后我分别搜索并下载了这两个jar文件,并将它们包含在 /WEB-INF/lib文件夹中。最后,我能够使用 Tomcat 服务器运行我的 webapp。:)

于 2016-03-28T04:31:14.593 回答
0

我也遇到了这个问题,我所做的只是从项目和 Eclipse 工作区中删除现有的服务器(在我的例子中是 Tomcat)配置。

就我而言,这个问题发生在我玩弄我的 Maven 设置并最终把它们搞砸时。但最终我修复了我的 Maven 问题,以实现 tomcat 服务器无法启动并且无法加载项目中涉及的各种应用程序的应用程序上下文。那时我决定放弃现有的服务器配置。

然后我再次重新添加了 Apache 服务器。然后是我的项目特定设置/添加。它终于像魅力一样起作用了。

于 2020-12-09T06:46:04.620 回答
0

我刚刚删除了 web.xml 文件中 servlet 的声明,它对我有用。

祝你好运

于 2016-08-28T21:27:18.130 回答
0

多谢你们。以上所有都失败了,除了从文件中删除所有内容C:\Users\debasish\workspace\.metadata\.plugins\org.eclipse.wst.server.core然后再次创建服务器。

但在删除这些文件内容之前先删除服务器。

于 2016-12-09T11:51:52.097 回答
0

这个适用于所有 Maven 用户,使用他们的依赖项作为类路径,而不是将它们复制到 /WEB-INF/lib 中:只需在之前添加这个(复制依赖库)</plugin>

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <phase>process-sources</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>WebContent/WEB-INF/lib</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
于 2017-04-02T10:38:26.427 回答
-1

如果您正在使用但现在在工作区中关闭的任何项目可能会导致此问题,请尝试从 eclipse 内的服务器文件夹中删除上下文或打开项目。

于 2014-04-07T07:19:55.350 回答
-1

所以这个问题与 elcipse 的元数据错误有关。转到保存此配置的元数据文件夹。对我来说,其中一个错误是:

SEVERE: Error starting static Resources java.lang.IllegalArgumentException: Document base C:\Users\Cannibal\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FoodQuantityService does not exist or is not a readable directory

所以去那里你的 Eclipse 的工作区它对所有人都是不同的并删除它的所有内容。我的服务被命名为FoodQuantityService ,所以我删除了org.eclipse.wst.server.core中的所有文件,但在此之前从 Eclipse 中删除了您的服务器配置

删除当前服务器配置

然后创建新的配置文件->新建->其他->服务器选择Tomcat,然后选择你想要发布的项目。启动服务器,一切都会好的。

于 2013-06-02T17:46:19.103 回答
-1

我在使用 eclipse-jee 时遇到了同样的问题。我发现这个问题的原因是我的 web-app 中有两个或多个重复的 @WebServlet("/yourServlet") 定义,所以解决方案是消除重复

于 2014-04-19T13:53:41.717 回答
-1

1 在 Eclipse EE 项目资源管理器中右键单击“您的项目” 2 单击属性 3 单击目标运行时 4 您当前正在使用的版本的复选框 5 应用并关闭

这应该可以解决问题。

于 2019-07-01T21:48:13.267 回答
-2

确保导入正确的注释,因为我和你有同样的问题。

javax.servlet.annotation.*

于 2013-10-23T17:37:08.580 回答