Как устранить ошибку listenerStart при развертывании веб-приложения в Tomcat 5.5?
Я развернул веб-приложение Apache Wicket, которое использует Spring и Hibernate, для моего экземпляра Tomcat 5.5. Когда я перехожу к интерфейсу Tomcat Manager, я вижу, что развернутое веб-приложение не запущено. Когда я нажимаю "Старт", я получаю следующее сообщение об ошибке; Msgstr "Сбой - приложение по контекстному пути / спагетти не может быть запущено".
Мой catalina.log содержит следующее:
Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class
Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/spaghetti] startup failed due to previous errors
Выдержка из web.xml:
<Слушатель> <Слушатель-класс> org.springframework.web.context.ContextLoaderListener Слушатель-класс> Слушателем>
Любая помощь с благодарностью.
4 ответа
/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar
/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar
Вы не должны иметь никаких специфичных для сервера библиотек в /WEB-INF/lib
, Оставьте их в собственной библиотеке приложения. Это приведет только к столкновениям в пути к классам. Избавьтесь от всех специфичных для appserver библиотек в /WEB-INF/lib
(а также в JRE/lib
а также JRE/lib/ext
если вы разместили любой из них там).
Распространенная причина того, что специфичные для appserver библиотеки включены в библиотеку веб-приложения, заключается в том, что начинающие думают, что это правильный способ исправления ошибок компиляции, среди прочего: javax.servlet
классы не могут быть разрешены. Поместить их в библиотеку веб-приложения - неправильное решение. Вы должны ссылаться на них в classpath во время компиляции, т.е. javac -cp /path/to/server/lib/servlet.jar
и т. д. или, если вы используете IDE, вам следует интегрировать сервер в IDE и связать веб-проект с сервером. Затем среда IDE автоматически получит специфичные для сервера библиотеки в classpath (buildpath) проекта webapp.
Я обнаружил, что следование этим инструкциям помогло найти проблему. Для меня это был убийца, не зная, что сломалось.
Цитирование по ссылке
В Tomcat 6 или выше, регистратором по умолчанию является регистратор java.util.logging, а не Log4J. Так что если вы пытаетесь добавить файл "log4j.properties" - это НЕ будет работать. Регистратор утилит Java ищет файл с именем "logging.properties", как указано здесь: http://tomcat.apache.org/tomcat-6.0-doc/logging.html
Поэтому, чтобы перейти к деталям отладки, создайте файл "logging.properties" в вашей папке "/WEB-INF/classes" вашей WAR, и все готово.
И теперь, когда вы перезапустите ваш Tomcat, вы увидите всю свою отладку во всей ее красе!!!
Пример файла logging.properties:
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler
Я столкнулся с этой ошибкой, когда JDK, под которым я скомпилировал приложение, отличался от JVM tomcat. Я проверил, что менеджер Tomcat работает с jvm 1.6.0, но приложение было скомпилировано под java 1.7.0.
После обновления Java и изменения JAVA_HOME в нашем скрипте запуска (/etc/init.d/tomcat) ошибка исчезла.
Ответ, предоставленный Томом Салебой, очень полезен. Сегодня я тоже боролся с такой же ошибкой
28 апреля 2015 г. 19:53:27 org.apache.catalina.core.StandardContext startInternal SEVERE: ошибка listenerStart
Я последовал предложению и добавил файл logging.properties. И ниже была моя причина отказа:
java.lang.IllegalStateException: невозможно установить свойство корневой системы веб-приложения, если файл WAR не раскрыт
Основной причиной проблемы был прослушиватель (Log4jConfigListener), который я добавил в файл web.xml. И согласно ссылке /questions/37021377/severe-isklyuchenie-orgspringframeworkwebutillog4jconfiglistener, этот слушатель не может быть добавлен в WAR, который не расширен.
Для кого-то может быть полезно узнать, что это происходило на оборудовании OpenShift JBoss.