Java.lang.ClassNotFoundException: HttpServletRequest
Я только что получил 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
Как устранить ошибку. Я просмотрел некоторые подобные сообщения, но не нашел его полезным.
Ответы
Ответ 1
В вашем веб-приложении есть специальные библиотеки servlet-api.jar
такие как файл servlet-api.jar
в /WEB-INF/lib
. Это не правильно. Убери их всех. /WEB-INF/lib
должен содержать только библиотеки, относящиеся к веб-приложению, а не к контейнеру сервлета. Контейнер сервлетов (например, Tomcat) - это тот, кто уже должен предоставлять специальные библиотеки контейнеров сервлетов. Если вы предоставляете библиотеки из произвольного контейнера сервлета другой сборки/версии, вы столкнетесь с проблемами такого рода, поскольку ваше веб-приложение не сможет работать на контейнере сервлета другой сборки/версии, чем эти библиотеки. возник из.
Это довольно распространенная ошибка для начинающих, когда они сталкиваются с ошибками во время компиляции, поскольку они неправильно настроили свой проект IDE. См. Также Как импортировать API javax.servlet в мой проект Eclipse?
Ответ 2
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
Проблема может быть javax
библиотека javax
не найдена.
Я решил ту же проблему с:
Щелкните правой кнопкой мыши проект в Eclipse → Properties
→ Java Build Path
→ Libraries
→ Add library...
→ Server Runtime
→ Apache Tomcat
Ответ 3
У меня не было сервлета-api.jar в каталоге WEB-INF/lib приложения (или в любом другом банке). Проблема в том, что в 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>
...
... согласно учебнику. Удаление, которое все еще позволяло сервлету функционировать, и не получил ошибку.
Ответ 4
добавьте следующее в свой pom.xml.it для меня.
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
Ответ 5
У меня такая же проблема, когда я пытался с помощью первого Spring MVC webapp. То, что я сделал, было загружено jar файлами, указанными по ссылке (Загрузить Spring).
Среди флагов в папке, извлеченной из ZIP, файлы 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
Но когда я получаю сообщение об ошибке, глядя на решение, я понял, что мне также нужна следующая банка.
-
Обще-каротаж 1.0.4.jar
-
JSTL-1.2.jar
Затем я искал и загружал два файла jar отдельно и включал их в папку /WEB-INF/lib. И, наконец, я смог запустить мой webapp с помощью сервера Tomcat.:)
Ответ 6
вы должны добавить файл servler-api.jar в папку WEB-INF/lib
Ответ 7
Я только что удалил объявление сервлета в файле web.xml, и он работает для меня.
Удачи.
Ответ 8
Спасибо, ребята.
Все вышеперечисленное не удалось, за исключением того, что удалил все содержимое из файла C:\Users\debasish\workspace\.metadata\.plugins\org.eclipse.wst.server.core
, а затем снова создало сервер.
Но сначала удалите сервер, прежде чем удалять содержимое этого файла.
Ответ 9
Этот файл предназначен для всех пользователей 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>
Ответ 10
У меня была та же проблема, и причиной было отсутствие
commons-logging-1.2.jar
Я добавляю его в папку lib
, тогда мой сервер Apache Tomcat 7 выполняется без проблем.
Ответ 11
Ту же ошибку я получил
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
Я удалил проект из рабочего пространства затмения, удалил папку .settings проекта и снова импортировал в затмение. Сделал трюк для меня.
Ответ 12
1 Щелкните правой кнопкой мыши "ваш проект" в Eclipse EE Project Explorer. 2 Нажмите "Свойства". 3 Установите флажок "Целевые среды выполнения". 4 Флажок версии, с которой вы в данный момент работаете.
Это должно сделать свое дело.
Ответ 13
Таким образом, проблема связана с ошибками метаданных 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
Итак, в рабочей области вашего затмения все по-другому и удаляет все содержимое. Мои службы были названы FoodQuantityService, поэтому я удалил все файлы в org.eclipse.wst.server.core, но перед этим удалите конфигурацию своего сервера из Eclipse
![Delete current server configuration]()
Затем создайте новую конфигурацию
File- > New- > Другие- > Сервер
выберите Tomcat, а затем проекты, которые вы хотите опубликовать. Запустите сервер, и все будет в порядке.
Ответ 14
Если какой-либо проект, который вы использовали и который теперь закрыт в рабочей области, может привести к этой проблеме, попробуйте удалить контекст из папки сервера внутри eclipse или откройте проекты.
Ответ 15
Я столкнулся с той же проблемой при использовании eclipse-jee.
Я нашел причину этой проблемы в том, что у меня было два или более дублирующих определения @WebServlet ( "/yourServlet" ) в моем веб-приложении, поэтому решение заключается в устранении дубликатов
Ответ 16
Убедитесь, что вы импортировали правильную аннотацию, потому что у меня была такая же проблема, как и вы.
javax.servlet.annotation.*