Как устранить ошибку listenerStart при развертывании веб-приложения в Tomcat 5.5? - PullRequest
34 голосов
/ 15 апреля 2010

Я развернул веб-приложение Apache Wicket, которое использует Spring и Hibernate, для моего экземпляра Tomcat 5.5. Когда я перехожу к интерфейсу Tomcat Manager, я вижу, что развернутое веб-приложение не запущено. Когда я нажимаю «Старт», я получаю следующее сообщение об ошибке; «FAIL - Приложение по контекстному пути / спагетти не может быть запущено».

Мой 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:

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

Любая помощь очень ценится.

Ответы [ 4 ]

66 голосов
/ 24 января 2013

Я обнаружил, что следование этим инструкциям помогло найти проблему. Для меня это был убийца, не зная, что было сломано.

http://mythinkpond.wordpress.com/2011/07/01/tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

Цитирование по ссылке

В 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
33 голосов
/ 15 апреля 2010
/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, если вы разместили там одну из них).

Распространенная причина того, что библиотеки конкретного сервера приложений включены в библиотеку веб-приложения, заключается в том, что начинающие считают, что это правильный способ исправления ошибок компиляции, в том числе классов javax.servlet, которые невозможно разрешить. Поместить их в библиотеку веб-приложения - неправильное решение. Вы должны ссылаться на них в classpath во время компиляции, то есть javac -cp /path/to/server/lib/servlet.jar и т. Д., Или если вы используете IDE, вы должны интегрировать сервер в IDE и связать веб-проект с сервером. После этого среда IDE автоматически получит серверные библиотеки в classpath ( buildpath ) проекта webapp.

10 голосов
/ 29 декабря 2014

Я столкнулся с этой ошибкой, когда JDK, под которым я скомпилировал приложение, отличался от JVM tomcat. Я проверил, что менеджер Tomcat работает на jvm 1.6.0, но приложение было скомпилировано под java 1.7.0.

После обновления Java и изменения JAVA_HOME в нашем скрипте запуска (/etc/init.d/tomcat) ошибка исчезла.

1 голос
/ 29 апреля 2015

Ответ от Tom Saleeba очень полезен. Сегодня я тоже боролся с такой же ошибкой

28 апреля 2015 г. 19:53:27 org.apache.catalina.core.StandardContext startInternal SEVERE: ошибка listenerStart

Я последовал предложению и добавил файл logging.properties. И ниже была моя причина отказа:

java.lang.IllegalStateException: невозможно установить корневую систему веб-приложения свойство, когда файл WAR не раскрыт

Основной причиной проблемы был прослушиватель (Log4jConfigListener), который я добавил в файл web.xml. А по ссылке SEVERE: исключение org.springframework.web.util.Log4jConfigListener , этот слушатель не может быть добавлен в WAR, который не расширен.

Для кого-то может быть полезно узнать, что это происходило на оборудовании OpenShift JBoss.

...