Tomcat: LifecycleException при развертывании

Я только что загрузил пакет Tomcat 7.0.23 на свою Ubuntu 11.10.

Я следовал инструкциям на веб-сайте API Google, чтобы развернуть их пример веб-приложения. В основном состоит из jar файлы, размещенные в WEB-INF/lib каталог и web.xml файл помещен в WEB-INF каталог.

Тем не менее, приложение не развертывается автоматически, и при попытке заставить сервер развернуть его через графический интерфейс менеджера, я получаю следующее сообщение:

FAIL - Application at context path /myWebApp could not be started
FAIL - Encountered exception org.apache.catalina.LifecycleException: 
         Failed to start component 
         [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myWebApp]]

Однако примеры JSP, предоставляемые с Tomcat, действительно работают!

У меня такая же проблема на Tomcat6.

Так что я сделал не так? Это проблема с разрешением? (Я даже пытаюсь изменить мод всех файлов на 777).

18 ответов

Решение

Это означает, что что-то не так с вашей конфигурацией приложения или запуском.

В логах всегда есть информация об этом - проверьте logs/catalina.out и выяснить, что не так.

У меня была эта проблема, когда он просто не развертывался на Tomcat, затем я удалил все аннотации @webServlet из всего кода моего сервлета, и он был успешно развернут.

Удалите servlet-api.jar из пути сборки и просто добавьте его в папку lib web-inf, а затем экспортируйте файл WAR.. это будет работать... ура...!!!

Проверьте файл WEB-INF/web.xml на соответствие сервлету.

В eclipse ... перейдите в представление серверов... щелкните правой кнопкой мыши на сервере tomcat -> Добавить или удалить программы -> Удалить все другие проекты. Теперь попробуйте запустить проект. Он должен работать.

Также есть изменения в том, что Eclipse Project каким-то образом поврежден. Обычно в этом случае Eclipse добавляет несколько дублированных.jars в ваш проект, и эти.jars обычно совпадают с Maven Dependency .jars.

Если ваш проект похож на приведенный ниже пример, существует огромное изменение в том, что зависимости Maven дублируются и должны быть удалены вручную.


например (Project Explorer View)
SRC / Основной /Java
SRC / тест /Java
весна-загрузки vaadin.jar
весна-aop.jar
Maven Зависимости
весна-загрузки vaadin.jar
весна-aop.jar
так далее...

... и это лекарство:-)


Проект / Свойства /Java Build Path / Библиотеки

Просто удалите все пути REPO_M2/... и обновите проект.

У меня из памяти вышла ошибка при столкновении с такими явлениями:

Caused by: java.lang.OutOfMemoryError: PermGen space

после освобождения памяти проблема решена.

Для меня проблема была вызвана проверкой проекта в другом директории из git out. Выбор того же имени, что и файл войны, решил проблему.

Я получил эту ошибку, когда на сервере было недостаточно места. проверить логи и серверные пространства


Tomcat имеет различные способы развертывания WAR. Некоторые работают, некоторые нет. Пожалуйста, попробуйте следующие методы развертывания:

  • Автоматически: скопируйте и вставьте ваш WAR-файл в ${CATALINA_HOME}/webapps. Папка с тем же именем появится, если все пойдет правильно.
  • Диспетчер приложений: загрузить файл WAR
  • Диспетчер приложений: найдите файл WAR

В моем случае с помощью приложения Manager (локальный URL: http://localhost:8080/manager) работало. В то время как развертывание с использованием copy-paste привело к вашей ошибке.

Я получаю эту ошибку при развертывании

[main] org.apache.catalina.startup.HostConfig.deployDirectory Error deploying web application directory [/opt/tomcat/apache-tomcat-9.0.30/webapps/iclock]
    java.lang.IllegalStateException: Error starting child
            at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
            at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
            at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
            at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1133)
            at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1867)
            at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
            at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)

Я также столкнулся с этим из-за несоответствия версии Tomcat ! Согласно документации, версия Grails 4.0.x для tomcat по умолчанию - это tomcat 8, но на сервере, который я использовал, была версия 9.0.31 для tomcat!

в файле build.gradle я изменил compile "org.springframework.boot: spring-boot-starter-tomcat" на предоставленный "org.springframework.boot: spring-boot-starter-tomcat" и добавил / изменил плагин кеширования для компиляции "org.grails.plugins:cache", {исключить группу: "org.codehaus.groovy", модуль: "groovy-all"} в блоке зависимостей ![Плагин Cache входит в состав Groovy-all 2.1]

Оно работало завораживающе! Как ни странно, это не вызвало никаких проблем при запуске приложения с командой grails run-app

Я сделал то же самое, и теперь он работает. На самом деле файл web.xml имеет неправильный шаблон URL. Вы можете удалить один URL-шаблон, либо сервлет формы аннотации, либо web.xml. Это сработало для меня.

Я использую XAMPP, и я обновил только версию Tomcat до версии Tomcat8.

я остановил службу tomcat на xampp и переименовал старую папку Tomcat в «tomcat_old»

      c:\xampp\tomcat_old

(Если у вас возникли проблемы с переименованием, используйте бесплатный инструмент, например LockHunter, для разблокировки файлов)

Итак, я загрузил tomcat8 и скопировал только файлы проекта (содержащие папки bin, conf и т. д.) в мою папку tomcat;

      c:\xampp\tomcat 

Затем я проверяю

      C:\xampp\xampp-control.ini

Изменил этот файл, как показано ниже:

      [BinaryNames]
Apache=httpd.exe
MySQL=mysqld.exe
FileZilla=filezillaserver.exe
FileZillaAdmin=filezilla server interface.exe
Mercury=mercury.exe
Tomcat=tomcat7.exe <--- I changed this to: Tomcat=tomcat8.exe after upgrading tomcat

[ServiceNames]
Apache=Apache2.4
MySQL=mysql
FileZilla=FileZillaServer
Tomcat=Tomcat7 <--- I changed this to: Tomcat=Tomcat8

Сохранил файл и восстановил старых пользователей tomcat из tomcat-users.xml в старой папке conf tomcat в новую папку conf

Перезапустите Tomcat, и это сработало

Я получил эту ошибку при развертывании файла войны в Tomcat. Мой проект требовал Java 1.8, и оказалось, что установлена ​​только Java 1.7. Это не было сразу видно из любого файла журнала, который я мог найти.

Это может быть вызвано проблемой в вашем коде. В моем случае, например,

      I had Mongo database pointing to my local(done this for testing and forgot to update it back) instead of the one on EC2 which is the same machine 
        where war file is deployed to. 

Как я понял это? Мне пришлось сравнивать со старой версией кода, которая отлично работает.

Я застрял и проблема решена. Не используйте путь, который называется "Подключить сетевой диск", но вместо этого используйте структуру \server\folder.

Это может быть очень тривиально, но стоит проверить, прежде чем терять время.

В моем случае mysql служба была отключена.

Когда у вас есть приложение java, включающее JPA / Hibernate, оно проверяет соединение с базой данных при запуске. Только что выяснил, просмотрев взгляды, где была ошибка диспетчера сущностей.

Другие вопросы по тегам