it-swarm.com.ru

Tomcat & Spring Web - исключение класса не найдено org.springframework.web.context.ContextLoaderListener

Я получаю следующее исключение при попытке запустить Tomcat через Eclipse (щелкнув правой кнопкой мыши Project, Run As -> Run on Server).

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:4660)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5226)
    at org.Apache.catalina.core.StandardContext$1.call(StandardContext.Java:5221)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Jun 12, 2011 8:46:11 PM org.Apache.catalina.core.StandardContext listenerStart

Я строю свой проект с использованием Maven (m2Eclipse). Я добавил необходимые зависимости в библиотеки Spring и вижу файл spring-web.jar в каталоге lib конечного артефакта (который содержит класс). Когда я развертываю приложение за пределами IDE, оно работает нормально.

Любые указатели относительно того, почему это происходит, будут высоко оценены.

33
Devanath Rao

Я столкнулся с той же проблемой несколько дней назад с m2Eclipse (без интеграции WTP, доступной через m2Eclipse-extras) на Eclipse Indigo. Я создал веб-модуль Maven и вручную добавил к нему фасет динамического веб-модуля. Когда я развернул его на Eclipse WST Tomcat Server, оказалось, что мои зависимости Maven не переносятся на сервер при публикации проекта на нем.

Решение было простым. Щелкните правой кнопкой мыши по вашему веб-проекту в Project Explorer -> выберите «Свойства». В свойствах проекта выберите «Сборка развертывания». 

На странице свойств сборки развертывания отображается содержимое, которое Eclipse будет опубликовано на сервере в виде собранного артефакта. Вы должны сообщить Eclipse, что вы хотите, чтобы все ваши зависимости Maven тоже публиковались.

Для этого нажмите кнопку «Добавить», затем выберите «Java Build Path Entries». Нажмите Next и выберите Maven Dependencies. Это будет публиковать файлы JAR зависимостей Maven в папку lib, когда Eclipse публикует ваш проект на WST-сервере.

Этот подход работал для меня.

79
Yohan Liyanage

Самый простой способ узнать, что Eclipse поместит в ваш файл war для развертываний сервера, - это щелкнуть правой кнопкой мыши -> Export -> WAR-файл. Затем вы можете распаковать это и посмотреть, что внутри.

Если вы откроете ".settings/org.Eclipse.wst.common.component", вы должны увидеть определение веб-приложения веб-инструментов и увидеть что-то вроде:

<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="MyApp">
    <wb-resource deploy-path="/" source-path="/src/main/webapp"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/Java"/>
    <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
    <property name="Java-output-path" value="target/classes"/>
    <property name="context-root" value="MyApp"/>
</wb-module>
</project-modules>

На пути сборки в Eclipse убедитесь, что в библиотеках отображается «Maven Dependencies». Последние версии плагина m2Eclipse и WST должны автоматически выбирать зависимости Maven и помещать их в файл WEB-INF/lib в вашем файле war.

И последнее, но не менее важное: вы можете рассмотреть возможность приобретения последней версии SpringSource Tool Suite (STS). STS обладает рядом полезных функций, включая объединение новейших m2Eclipse и WST. Вы по-прежнему можете использовать его с Tomcat (или его версией Tomcat), и в нем есть несколько архетипов и учебных пособий для быстрой работы веб-приложения.

Наслаждайтесь!

4
Al Baker

Добавьте эти файлы (какой бы релиз вы ни использовали) в

Apache-Tomcat-8.0.35\lib 

папка (и перезагрузите сервер):

spring-aop-4.0.1.RELEASE.jar
spring-beans-4.0.1.RELEASE.jar
spring-context-4.0.1.RELEASE.jar
spring-core-4.0.1.RELEASE.jar
spring-expression-4.0.1.RELEASE.jar
spring-web-4.0.1.RELEASE.jar
spring-webmvc-4.0.1.RELEASE.jar
0
Shahriar