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)
Надеюсь, что это поможет