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

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

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

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, он отлично работает.

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

<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 внутри вашего военного файла.

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

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

Ответ 3

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

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