Подтвердить что ты не робот

Log4jConfigListener не может быть найден - контекст не запускается

Я пытаюсь настроить веб-приложение на 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 включен и все необходимые библиотеки spring.

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

Нафталь

4b9b3361

Ответ 1

Класс 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, находящихся в вашем пути к классам, могут привести к хаосу. Как система должна знать , который org.springframework.web.util.Log4jConfigListener пакет для загрузки, если их 2? У Tomcat есть 3 разные папки:

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

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

Ответ 2

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

  • Щелкните правой кнопкой мыши на своем проекте в Eclipse и откройте "Свойства" → "Развертывание сборки"
  • Нажмите "Добавить..."
  • Выберите "Записи пути сборки Java" и нажмите "Далее"
  • выберите "Maven Dependencies" и нажмите "Finish"

Ответ 3

Если вы используете maven и eclipse

1) Посмотрите в свой файл .classpath вашего веб-проекта. Если у вас есть запись в 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) Если это не сработает, щелкните правой кнопкой мыши на своем веб-проекте в затмении и перейдите в Свойства → зависимости JavaEE. Убедитесь, что установлен флажок Зависимости Maven.

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

Ответ 4

Простым решением является очистка каталога Tomcat в Eclipse. Это сработало для меня.

Ответ 5

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

org.apache.logging.log4j.web.*

пакет.