java.lang.ClassNotFoundException:HttpServletRequest

时间:2012-05-11 17:46:48

标签: servlets tomcat7

我刚收到tomcat 7.0.27。我有时间开始tomcat 45秒。此外,它在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

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

17 个答案:

答案 0 :(得分:43)

您的webapp在其servlet-api.jar中具有与/WEB-INF/lib文件类似的servletcontainer库。这是正确。全部删除它们。 /WEB-INF/lib应仅包含特定于webapp的库,而不应包含servletcontainer。 servletcontainer(如Tomcat)是应该已经提供servletcontainer特定库的人。如果你从一个不同的make / version的任意servletcontainer提供库,你会遇到这种问题,因为你的webapp不能在不同make / version的servletcontainer上运行,而不是那些库源自

当遇到编译时错误时,这是​​一个非常常见的启动器错误,因为他们没有正确设置IDE项目。另请参阅How do I import the javax.servlet API in my Eclipse project?

答案 1 :(得分:16)

  

Caused by: java.lang.NoClassDefFoundError: HttpServletRequest

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

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

答案 2 :(得分: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运行,并且没有得到错误。

答案 3 :(得分:3)

在你的pom.xml中添加以下内容。它适用于我。

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

答案 4 :(得分:0)

我也遇到了这个问题,要摆脱它,我要做的就是从项目和Eclipse工作区中删除现有的Server(在我的情况下为Tomcat)配置。

在我的情况下,当我使用我的Maven设置并最终也弄乱了它们时,发生了此问题。但是最终我解决了Maven问题,以实现tomcat服务器无法启动并且无法加载项目中涉及的各种应用程序的应用程序上下文。那是我决定删除现有服务器配置的时候。

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

答案 5 :(得分:0)

我得到同样的错误

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

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

答案 6 :(得分:0)

我遇到了同样的问题,原因是缺失了 commons-logging-1.2.jar

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

答案 7 :(得分: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>

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

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

祝你好运

答案 10 :(得分:0)

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

答案 11 :(得分:0)

当我尝试使用第一个Spring MVC webapp时,我确实遇到了同样的问题。我所做的是下载了链接(Download spring framework)给出的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。

  • 共享记录-1.0.4.jar

  • JSTL-1.2.jar

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

答案 12 :(得分:-1)

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

答案 13 :(得分:-1)

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

答案 14 :(得分:-1)

1在Eclipse EE Project Explorer中右键单击“您的项目” 2单击属性 3单击目标运行时 4当前使用版本的复选框 5申请并关闭

这应该可以解决问题。

答案 15 :(得分:-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中删除了您的服务器配置

Delete current server configuration

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

答案 16 :(得分:-2)

确保导入正确的注释,因为我遇到了与您相同的问题。

javax.servlet.annotation.*