Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener в eclipse

Я делаю простое приложение Spring MVC (не использующее maven), которое будет печатать мир приветствия в браузере. Это динамический проект в eclipse, поэтому я поместил все необходимые файлы jar как в путь сборки, так и в папку WEB-INF/lib

Я попробовал два решения, и оба они не работали.

Решения, которые я нашел:

  • рабочий каталог очистки tomcat
  • вставить spring -mvc/spring -web.jar jar файл в lib

Вот мой web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

    <display-name>Spring MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

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

</web-app>

и нет никакой ошибки в настройке contextLoaderListener, тогда в чем проблема, есть ли другое решение

Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.11
Jan 20, 2014 8:16:40 PM 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:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4618)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringSample] startup failed due to previous errors
Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 8:16:40 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4010 ms

В конечном итоге я получаю ошибку 404, поскольку моя служба не загружена

Ответ 1

У меня была такая же проблема в Eclipse. Когда я сделаю чистую установку maven и переведю сгенерированный файл WAR в мою папку Webapp Tomcat, он будет работать без проблем. Однако для того, чтобы отлаживать, я хотел запустить в Eclipse, но это могло бы вызвать следующую ошибку.

SEVERE: Error configuring application listener of class   org.springframework.web.context.ContextLoaderListener

Я googled вокруг, пока не нашел следующее сообщение в блоге.

http://commonexceptions.blogspot.com/2014/01/java.html

Как объясняет автор:

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

См. сообщение для решения. Это простое исправление конфигурации сборки развертывания eclipse. Мне потребовалось около 30 секунд, и теперь я могу отлаживать свой Spring webapp в Eclipse.

Вот соответствующие шаги из сообщения:

Добавление зависимостей Maven в сборке веб-развертывания проекта:

  • Откройте свойства проекта (например: в проводнике проекта rightClick on название проекта, чтобы выбрать "Свойства" ).
  • Выберите "Развертывание сборки".
  • Нажмите кнопку "Добавить..." в правой навигационной панели.
  • Выберите "Java Build Path Entries" из меню "Тип директивы", а затем нажмите "Далее".
  • Выберите "Зависимости Maven" от меню "Записи пути Java".
  • нажмите "Готово".
  • Теперь "Maven Dependencies" следует добавить в сборку веб-развертывания и запустить.

При использовании Eclipse WDT и использовании немодифицированного и ранее работающего проекта:

  • Если Tomcat работает Стоп
  • Откройте представление "Серверы": затем выберите "Показать представление", а затем выберите "Другое" > "Сервер" > "Серверы"
  • Щелкните правой кнопкой мыши на сервере Tomcat и выберите "Очистить каталог работы Tomcat".
  • Щелкните правой кнопкой мыши на сервере Tomcat и выберите "Очистить"
  • Перезагрузите сервер Tomcat

Вышеупомянутое решение должно устранить исключение.

Ответ 2

Попробуйте поместить файл spring -web.jar непосредственно в WEB-INF/lib (WEB-INF/lib/spring -web.jar), а не в WEB-INF/lib/spring -mvc/spring -web.jar

Ответ 3

Если вы создаете простой проект без maven, необходимо выполнить следующие шаги,

  • загружать требуемые файлы jar, например. Я использую spring 4, поэтому я загрузил файлы из Индекс выпуска

  • Затем добавьте эти файлы в папку WebContent/WEB-INF/lib.

  • Добавить файлы jar в пути сборки (В eclipse: щелкните правой кнопкой мыши по проекту → Свойства → Путь сборки Java → Добавить JARs...)

Это позволит избежать исключения org.springframework.web.context.ContextLoaderListener.

Ответ 4

У меня есть ОЧЕНЬ ХОРОШИЙ СПОСОБ, чтобы помочь вам узнать Spring MVC, если у вас есть Maven и работает.

IF SO: перейдите в свою командную строку (Cygwin), я использую...

mvn archetype: сгенерировать Он попросит "номер архетипа". Для вас... тип 16 Введите идентификатор группы, который является основным пакетом. Введите идентификатор артефакта, который является вашим именем проекта. SNAP-SHOT --- просто нажмите кнопку ввода и то же самое с версией. Пакет - это то же самое, что и имя вашей группы. EX: com.spring Подтвердите это, введя букву "y" и нажмите "Enter". Выполните все вышеперечисленное после того, как вы находитесь в своем каталоге рабочей области. Таким образом, он создается там. Вы можете сделать "mvn eclipse: eclipse", чтобы загрузить его в Eclipse или вы можете просто импортировать его. Я предпочитаю старомодный импорт существующего проекта.

Все будет "уже" настроено для вас с точки зрения всей конфигурации (на основе Java), которая вам подходит. Он также будет иметь все зависимости Maven, которые вам нужны, и в вашем pom.xml. Вы можете добавить или взять его, если хотите.

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

Удачи!!!

Ответ 5

Это проблема зависимости, некоторые атрибуты отсутствуют в артефакте. Мое решение в IntelliJ:

Щелкните правой кнопкой мыши по имени проекта → откройте настройки модуля → проблемы → добавьте отсутствующие зависимости к артефакту

Перезагрузите сервер (в моем случае был tomcat)

Надеюсь, что это поможет