Не удалось создать дочерний контейнер во время запуска java.util.concurrent.ExecutionException

Я попытался создать/запустить базовый 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"]

Ответы

Ответ 2

Вы должны были упаковать servlet-api.jar вместе с другими библиотеками в вашем военном файле. Вы можете проверить это, открыв свой военный файл и перейдя в папку WEB-INF/lib.

В идеале вы не должны предоставлять servlet-api jar. Контейнер, в вашем случае Tomcat, несет ответственность за предоставление его во время развертывания для вашего приложения. Если вы попытаетесь предоставить его также, то возникнут проблемы из-за несоответствия версии и т.д. Лучшая практика заключается в том, чтобы просто не упаковывать ее. Удалите его из WEB-INF/lib.

Дополнительная информация

Если вы используете maven для своей упаковки, просто добавьте тег provided с зависимостью, и maven будет не упаковывать его в файл окончательной войны. Что-то вроде

<dependency>
    <artifact>..
    <group> ...
    <version> ...
    <scope>provided</scope>
</<dependency>

Ответ 3

В вашем 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>

Ответ 4

У меня возникла аналогичная проблема, и это было вызвано тем, что я написал 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>

Ответ 5

Удалите проект с именем Servers (или Servers1, Servers2, который содержит ваш server.xml), найдите его в Проводнике пакетов (рабочее пространство)

Удалить сервер из Eclipse: Перейдите в "Окно" > "Настройки" > "Сервер" > "Рабочая среда", здесь удалите сервер, который вы используете из eclipse, и добавьте его снова (это создаст новую папку Project сервера в Eclipse),

Удалить сервер из проекта: Также удалите сервер в своем проекте (путь сборки > путь к конфигурации > путь сборки Java) и добавьте еще раз.

теперь у вас есть свежий проект сервера, который не будет иметь множественный контекст на своем сервере .xml, только удаление повторяющегося пути в server.xml решает проблему exixting, но все же запускает сервер, запустив этот сервер (Apache Tomcat v7) и работал нормально

И я не знаю, является ли это хорошей практикой или нет, я начинаю программировать.

Ответ 6

Я пытаюсь использовать http-сервлет, и я нахожу эту проблему, когда пишу дублируемую @WebServlet, я столкнулся с этой проблемой. После того, как я удалю или изменил значение @WebServlet, это работа.

1.Class

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

2.Class

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

Ответ 7

проверьте, установлено ли значение JAVA_HOME в 1.7 или ниже. потому что tomcat 7 несовместим с jdk 1.8

Это сработало для меня

Ответ 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) Запустите сервер.

Надеюсь, что это поможет.

Ответ 9

Я столкнулся с аналогичной проблемой с аналогичными журналами. Я использовал JDK 1.6 с apache tomcat 7. Установка java_home в 1.7 разрешила проблему.

Ответ 10

Некоторое время эта проблема возникает из-за несовместимой версии java и версии tomcat. Выберите совместимую версию обоих.

Ответ 11

Столкнулась с той же проблемой. Изменил JRE на правильную версию 1.8, и сделать maven чистым и создать решение проблемы. Возможно, вам придется изменить фасет проекта и проверить правильный путь.

Ответ 12

  • скачать commons-logging-1.1.1.jar.
  • Перейдите в свой проект, постройте путь, настройте путь сборки, путь сборки Java.
  • Добавить внешние банки.. добавить commons-logging-1.1.1.jar
  • нажмите, чтобы применить, ok
  • Перейдите к проекту, свойствам, сборке развертывания, нажмите "Добавить", введите путь к построению Java, затем выберите "Commons logging jar", "ok", "apply", "ok".
  • Удалить сервер, очистить ur proejct, добавить сервер, Запустить проект.

Ответ 13

Добавлена зависимость AWS и возникла эта ошибка. Когда я удаляю его из пом, ошибка исчезла. Возможно, у вас может быть такая же ситуация.

Ответ 14

Эта проблема также может быть вызвана поломкой репозитория 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. В результате этот файл становится поврежденным.

Итак, вот как вы могли бы решить эту проблему.

  1. Закройте свое затмение.
  2. Если вы знаете, какой конкретный jar файл поврежден в репозитории Maven, удалите этот файл.
  3. Если вы не знаете, какой файл поврежден в репозитории Maven, удалите весь репозиторий (rm -rf $HOME/.m2).
  4. Для каждого проекта запустите mvn package в командной строке. Важно запускать команду для каждого проекта по очереди, а не параллельно; таким образом, вы гарантируете, что каждый раз запускается только один экземпляр Maven.
  5. Откройте свое затмение.

Ответ 15

Я наблюдал похожую проблему в моем проекте. Проблема была решена, когда jar с отсутствующим определением класса был вставлен в каталог lib tomcat.