Ответ 1
Я думаю, вы найдете здесь аналогичную проблему:
java.lang.ClassNotFoundException: HttpServletRequest
И, вероятно, ответьте тоже. Надеюсь это поможет.
Я попытался создать/запустить базовый 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.lang.ClassNotFoundException: HttpServletRequest
И, вероятно, ответьте тоже. Надеюсь это поможет.
Вы должны были упаковать servlet-api.jar
вместе с другими библиотеками в вашем военном файле. Вы можете проверить это, открыв свой военный файл и перейдя в папку WEB-INF/lib.
В идеале вы не должны предоставлять servlet-api jar. Контейнер, в вашем случае Tomcat, несет ответственность за предоставление его во время развертывания для вашего приложения. Если вы попытаетесь предоставить его также, то возникнут проблемы из-за несоответствия версии и т.д. Лучшая практика заключается в том, чтобы просто не упаковывать ее. Удалите его из WEB-INF/lib.
Дополнительная информация
Если вы используете maven для своей упаковки, просто добавьте тег provided
с зависимостью, и maven будет не упаковывать его в файл окончательной войны. Что-то вроде
<dependency>
<artifact>..
<group> ...
<version> ...
<scope>provided</scope>
</<dependency>
В вашем webapp есть определенные библиотеки сервлетаконтейнера, такие как файл servlet-api.jar в его /WEB -INF/lib. Это неправильно.
Удалите их все.
The/WEB-INF/lib должен содержать только библиотеки, специфичные для webapp, а не для servletcontainer. Сервлетконтейнер (например, Tomcat) - это тот, кто уже должен предоставлять специальные библиотеки servletcontainer.
Если вы поставляете библиотеки из произвольного сервлетконтейнера другого make/version, вы столкнетесь с такими проблемами, потому что ваш веб-сервер не сможет запускать на сервлетконтейнере другой версии/версии, чем там, где эти библиотеки происходят от.
Как решить: В Eclipse Щелкните правой кнопкой мыши по проекту в свойствах eclipse → Путь сборки Java → Добавить библиотеку → Библиотека времени выполнения сервера → Apache Tomcat
Проект Im Maven: -
добавить строку follwing в файл 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>
У меня возникла аналогичная проблема, и это было вызвано тем, что я написал WebServlet Path в файле .java, а также в web.xml. Удаление его из любого места отлично подходит для меня.
В .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>
Удалите проект с именем Servers (или Servers1, Servers2, который содержит ваш server.xml), найдите его в Проводнике пакетов (рабочее пространство)
Удалить сервер из Eclipse: Перейдите в "Окно" > "Настройки" > "Сервер" > "Рабочая среда", здесь удалите сервер, который вы используете из eclipse, и добавьте его снова (это создаст новую папку Project сервера в Eclipse),
Удалить сервер из проекта: Также удалите сервер в своем проекте (путь сборки > путь к конфигурации > путь сборки Java) и добавьте еще раз.
теперь у вас есть свежий проект сервера, который не будет иметь множественный контекст на своем сервере .xml, только удаление повторяющегося пути в server.xml решает проблему exixting, но все же запускает сервер, запустив этот сервер (Apache Tomcat v7) и работал нормально
И я не знаю, является ли это хорошей практикой или нет, я начинаю программировать.
Я пытаюсь использовать http-сервлет, и я нахожу эту проблему, когда пишу дублируемую @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) Добавьте эту банку как зависимость от maven, например. добавьте это в pom.xml:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
3) Maven install
4) Запустите сервер.
Надеюсь, что это поможет.
Я столкнулся с аналогичной проблемой с аналогичными журналами. Я использовал JDK 1.6 с apache tomcat 7. Установка java_home в 1.7 разрешила проблему.
Некоторое время эта проблема возникает из-за несовместимой версии java и версии tomcat. Выберите совместимую версию обоих.
Столкнулась с той же проблемой. Изменил JRE на правильную версию 1.8, и сделать maven чистым и создать решение проблемы. Возможно, вам придется изменить фасет проекта и проверить правильный путь.
Добавлена зависимость AWS и возникла эта ошибка. Когда я удаляю его из пом, ошибка исчезла. Возможно, у вас может быть такая же ситуация.
Эта проблема также может быть вызвана поломкой репозитория Maven.
Я наблюдаю SEVERE: A child container failed during start
от времени SEVERE: A child container failed during start
сообщения при работе с Eclipse. В моем рабочем пространстве Eclipse есть несколько проектов. Некоторые из проектов имеют общие внешние зависимости. Если репозиторий Maven пуст (или я добавляю новые зависимости в файлы pom.xml
), Eclipse начинает загружать библиотеки, указанные в pom.xml
в репозиторий Maven. И Eclipse делает это параллельно для нескольких проектов в рабочей области. Может случиться, что несколько потоков Eclipse будут загружать один и тот же файл одновременно в одно и то же место в репозитории Maven. В результате этот файл становится поврежденным.
Итак, вот как вы могли бы решить эту проблему.
rm -rf $HOME/.m2
).mvn package
в командной строке. Важно запускать команду для каждого проекта по очереди, а не параллельно; таким образом, вы гарантируете, что каждый раз запускается только один экземпляр Maven.Я наблюдал похожую проблему в моем проекте. Проблема была решена, когда jar с отсутствующим определением класса был вставлен в каталог lib tomcat.