Как разрешить 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.