Log4jConfigListener не может быть найден - контекст не запускается - PullRequest
13 голосов
/ 24 января 2011

Я пытаюсь настроить веб-приложение на Eclipse.Я использую Tomcat 6.0 и JDK 1.6.0_23.По какой-то причине я получаю эту ошибку:

SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jan 24, 2011 11:44:08 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Я проверил, все ли библиотеки были добавлены в путь сборки, и все кажется правильным.log4j-1.2.15.jar включен и все необходимые пружинные библиотеки.

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

Нафталь

Ответы [ 5 ]

40 голосов
/ 25 августа 2011

Второе предложение Ретикулогики верно. Однако в Eclipse Helios опция «Зависимости модуля Java EE» была удалена. Исправление для Гелиоса выглядит следующим образом:

  1. Щелкните правой кнопкой мыши свой проект в Eclipse и выберите Свойства -> Сборка развертывания
  2. Нажмите «Добавить ...»
  3. Выберите «Записи пути сборки Java» и нажмите «Далее»
  4. выберите «Maven Dependencies» и нажмите «Finish»
4 голосов
/ 24 января 2011

Класс org.springframework.web.util.Log4jConfigListener определенно отсутствует в вашем пути к классам.

Первое, что я хотел бы предложить, это включить уровень ведения журнала в Tomcat - в папке conf - до «ALL» или «DEBUG», чтобы вы могли точно видеть, что происходит в контейнере, который предотвращение обнаружения этого класса.

Во-вторых, я бы порекомендовал вам проверить файлы JAR на наличие файла отсутствующих классов, запустив grep, если в linux / mac:

  # run at the root of your lib folders:
  grep -ri "org.springframework.web.util.Log4jConfigListener" *

Приведенная выше команда вернет все файлы JAR, содержащие этот пакет. Как только файл JAR изолирован, вы можете продолжить устранение неполадок.

В-третьих, убедитесь, что у вас нет никаких конфликтов. Несколько версий Log4j, находящихся в вашем classpath, приведут к хаосу. Как система должна знать какой org.springframework.web.util.Log4jConfigListener пакет должен быть загружен, если их 2? Tomcat имеет 3 разных папки classpath:

 shared/lib
 lib
 webapps/yourapp/WEB-INF/lib

Убедитесь, что в одной из этих папок есть только один файл JAR log4j.

3 голосов
/ 04 апреля 2014

Простое решение - очистить каталог Tomcat в Eclipse.У меня это сработало.

3 голосов
/ 06 мая 2011

Если вы используете Maven и Eclipse

1) Загляните в файл .classpath вашего веб-проекта. Если у вас есть запись пути к классу "org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER", то убедитесь, что этот атрибут также присутствует.

<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

2) Если это не сработает, щелкните правой кнопкой мыши по вашему веб-проекту в eclipse и перейдите в Свойства -> Зависимости модуля JavaEE. Убедитесь, что флажок Maven Dependencies установлен.

Затем сохраните, постройте, разверните yada yada

0 голосов
/ 31 января 2017

Если вы используете log4j2, вы можете найти эти классы в

org.apache.logging.log4j.web.*

пакет.

...