Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

Я использую spring 3.1.0.RELEASE, а мой контейнер сервлета tomcat 7, а моя IDE eclipse indigo и jar spring -webmvc-3.1.0.RELEASE.jar, который содержит DispatcherServlet существует в папке lib, но при запуске приложения я получаю исключение:

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:126)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    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)

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

EDIT: следующие файлы конфигурации:

1-.springBeans:

<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
    <version>1</version>
    <pluginVersion><![CDATA[2.9.0.201203011806-RELEASE]]></pluginVersion>
    <configSuffixes>
        <configSuffix><![CDATA[xml]]></configSuffix>
    </configSuffixes>
    <enableImports><![CDATA[false]]></enableImports>
    <configs>
        <config>src/main/webapp/WEB-INF/checkout-servlet.xml</config>
    </configs>
    <configSets>
    </configSets>
</beansProjectDescription>

2- web.xml:

<web-app>
  <display-name>Checkout</display-name>

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

  <servlet-mapping>
    <servlet-name>checkout</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

</web-app>

3- checkout-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <context:component-scan base-package="com.myapp"/>

    <bean id="myService" class="com.myapp.MyService"/>

</beans>

также при попытке доступа к любой странице приложения, я получаю исключение:

HTTP Status 404 - Servlet checkout is not available

type Status report

message Servlet checkout is not available

description The requested resource (Servlet checkout is not available) is not available.
Apache Tomcat/7.0.22

Ответ 1

Я обнаружил, что в сборке развертывания появилась запись:

[persisted container] org.maven.ide.eclipse.maven2_classpath_container

я удалил его и добавил запись maven dependencies, и теперь он отлично работает.

Ответ 2

Вам нужно добавить "Maven Dependency" в сборке развертывания

  • щелкните правой кнопкой мыши по вашему проекту и выберите свойства.
  • нажмите "Развертывание сборки".
  • нажмите добавить
  • нажмите "Записи пути сборки Java"
  • выберите Maven Dependencies "
  • нажмите "Готово".

Восстановить и развернуть снова

Примечание. Это также применимо для проекта non maven.

Ответ 3

Два возможных ответа:

1- Вы не включили spring - beans и spring -context jars в свою библиотеку. Если вы используете maven (что очень поможет), эти две строки будут достаточно

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
   <version>3.1.0.RELEASE</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>3.1.0.RELEASE</version>
</dependency>

2- Необходимые банки находятся в вашем пути к классам, но не используются на tomcat.

Ответ 4

Привет, ребята, у меня была такая же проблема с Idea Intellij и Spring 4 Я исправил проблему, и я хотел поделиться с вами ответом.

Я использую tomcat 7/idea intellij 13/ Spring 4

зависимости pom.xml

  <properties>
    <spring.version>4.0.5.RELEASE</spring.version>
  </properties>

  <dependencies>     
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
enter code here
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.2</version>
    </dependency>
        <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
  </dependencies>

В идее Intellij вам нужно перейти в Файл → Настройки проекта → Артефакты. затем enter image description here

clean → перестроить проект → построить артефакт, и все будет хорошо...

Ответ 5

Это решает проблему для меня. Это легко и довольно просто объясняется.

Шаг 1

  • Щелкните правой кнопкой мыши на проекте
  • Нажмите на Свойства

Шаг 2

  • Нажмите на вкладку "Сборка развертывания" в
  • Нажмите Добавить...

Шаг 3

  • Нажмите на записи пути сборки Java

Шаг 4

  • Нажмите на Maven Dependencies
  • Нажмите кнопку Готово

Шаг 5

  • Повторно разверните приложение Spring MVC в Tomcat снова
  • Перезапустите Tomcat
  • Элемент списка

ClassNotFoundException

Ответ 6

Я столкнулся с той же проблемой. Когда я увидел в папке maven репозитория .m2 (.... m2\repository\org\springframework\spring -webmvc) в моем локальном я нашел две папки 3.2.0.RELEASE. Я удалил один. Затем я отправился в проект, щелкнув правой кнопкой мыши → properties- > deployment essembly- > add maven. очистить сборку, а затем перезапустить сервер. Затем загрузился DispatcherServlet.

Ответ 7

Если все эти советы не работают, вы должны заново создать свой сервер (Tomcat или тому подобное). Это решило мою проблему.

Ответ 8

Включите ниже зависимость в вашем pom.xml

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>{spring-version}</version>
</dependency>

Ответ 9

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

Ответ 10

Вы можете использовать сервер GlassFish, и ошибка будет решена. Я пробовал с tomcat7 и tomcat8, но эта ошибка продолжалась непрерывно, но решалась с помощью GlassFish. Я думаю, что это проблема с сервером.

Это результаты с tomcat7: Результаты с tomcat7

Вот результаты с GlassFish: Результаты с GlassFish

Ответ 11

щелкните правой кнопкой мыши на своем проекте и выберите свойства. нажмите "Развертывание сборки". нажмите добавить нажмите "Записи пути Java Build" выберите Maven Dependencies "нажмите" Готово".

Ответ 12

Это может быть полезно для кого-то, поэтому я выложу это здесь. Мне не хватало этой зависимости от моего pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Ответ 13

Я решил, выполнив следующие шаги:

  • Щелкните правой кнопкой мыши в проекте > Настроить > Преобразовать в проект Maven
  • После преобразования щелкните правой кнопкой мыши в проекте > Maven > Обновить проект

Это фиксирует настройки "Сборка развертывания" проекта.

Ответ 14

Переместите файлы jar из вашего пути к классу web-inf/lib и запустите новый сервер tomcat.

Ответ 15

Я нашел простое решение, Просто добавьте свои банки в папку WEB-INF → lib..

Ответ 16

У меня была такая же проблема в WebSphere, но я не смог найти решение, хотя я проверил наличие зависимостей Spring и все отлично работало в tomcat. Я закончил тем, что удалил приложение и все еще получал ошибку, таким образом я думаю, что WebSphere завис на некотором поврежденном экземпляре.

Чтобы решить эту проблему, мне пришлось переустановить приложение, остановить его, удалить его, а затем переустановить.

Ответ 17

Для меня это была ошибка в pom.xml - я установил <scope>provided<scope> для моих зависимостей, и это делало невозможным их копирование на этапе mvn package.

Моими симптомами было сообщение об ошибке, опубликованное OP, и то, что файлы jar не были включены в путь WEB-INF/lib внутри .war после запуска пакета. Когда я убрал прицел, в выводе появились банки, и теперь все нормально загружается.