Как разрешить Error listenerStart при развертывании веб-приложения в Tomcat 5.5?

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

My 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>

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

Ответ 1

/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 вы должны не иметь серверные библиотеки. Оставьте их в собственной библиотеке приложений. Это приведет только к столкновениям в классе. Избавьтесь от всех библиотек, зависящих от приложений, в /WEB-INF/lib (а также в JRE/lib и JRE/lib/ext, если вы разместили их там).

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

Ответ 2

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

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 utils ищет файл с именем "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

Ответ 3

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

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

Ответ 4

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

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

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

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

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

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