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)

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

РЕДАКТИРОВАТЬ: ниже приведены мои файлы конфигурации:

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
79 голосов | спросил Mahmoud Saleh 27 J0000006Europe/Moscow 2012, 17:30:58

16 ответов


0

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

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

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

ответил Mahmoud Saleh 28 J0000006Europe/Moscow 2012, 12:54:54
0

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

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

Перестройте и разверните снова

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

ответил krakos 16 +04002012-10-16T12:53:38+04:00312012bEurope/MoscowTue, 16 Oct 2012 12:53:38 +0400 2012, 12:53:38
0

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

1 - Вы не включили в свою библиотеку Spring-Beans и JAR-файлы контекста Spring. Если вы используете 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 - необходимые файлы находятся в вашем classpath, но не развернуты на tomcat.

ответил Serkan Arıkuşu 28 J0000006Europe/Moscow 2012, 01:49:27
0

Привет, ребята. У меня была та же проблема с 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 вам нужно перейти в File -> Настройки проекта -> Артефакты. затем введите описание изображения здесь

clean -> перестроить проект -> постройте артефакт и все будет хорошо ...

ответил Adelin 5 J000000Saturday14 2014, 15:35:43
0

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

ответил TKS 29 Jpm1000000pmThu, 29 Jan 2015 16:42:49 +030015 2015, 16:42:49
0

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

ответил Chinbold Gansukh 9 MaramMon, 09 Mar 2015 06:26:19 +03002015-03-09T06:26:19+03:0006 2015, 06:26:19
0

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

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>{spring-version}</version>
</dependency>
ответил Victor 30 WedEurope/Moscow2015-12-30T19:44:27+03:00Europe/Moscow12bEurope/MoscowWed, 30 Dec 2015 19:44:27 +0300 2015, 19:44:27
0

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

Шаг 1

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

Шаг 2

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

Шаг 3

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

Шаг 4

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

Шаг 5

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

classnotfoundexception

ответил Lycone 3 J0000006Europe/Moscow 2018, 12:39:41
0

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

ответил user2947452 2 62013vEurope/Moscow11bEurope/MoscowSat, 02 Nov 2013 13:46:35 +0400 2013, 13:46:35
0

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

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

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

ответил Superb Saif 18 FebruaryEurope/MoscowbThu, 18 Feb 2016 07:58:50 +0300000000amThu, 18 Feb 2016 07:58:50 +030016 2016, 07:58:50
0

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

ответил Vishal Thakur 12 J0000006Europe/Moscow 2016, 22:05:23
0

Я решил, выполнив следующие действия:

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

Это исправляет параметры «Сборка развертывания» проекта.

ответил leo 31 PM00000060000005131 2015, 18:19:51
0

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

ответил ajai kumar 24 FebruaryEurope/MoscowbWed, 24 Feb 2016 20:56:29 +0300000000pmWed, 24 Feb 2016 20:56:29 +030016 2016, 20:56:29
0

Я нашел простое решение, Просто добавьте ваши jar-файлы в папку WEB-INF -> gt;

ответил Karthik 1 FebruaryEurope/MoscowbWed, 01 Feb 2017 07:37:01 +0300000000amWed, 01 Feb 2017 07:37:01 +030017 2017, 07:37:01
0

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

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

ответил flip66 23 PM000000100000004531 2018, 22:20:45
0

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

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

ответил Dan Rayson 28 32018vEurope/Moscow11bEurope/MoscowWed, 28 Nov 2018 15:40:55 +0300 2018, 15:40:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132