93 votes

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

J'utilise spring 3.1.0.RELEASE et mon conteneur de servlets est tomcat 7 et mon IDE est éclipse indigo et la jarre spring-webmvc-3.1.0.RELEASE.jar qui contient le DispatcherServlet existe dans le dossier lib, et pourtant, lorsque je lance l'application, j'obtiens l'exception suivante :

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)

Veuillez m'indiquer pourquoi je reçois cette exception et comment la corriger.

EDIT : voici mes fichiers de configuration :

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>

De plus, lorsque j'essaie d'accéder à n'importe quelle page de l'application, j'obtiens l'exception suivante :

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

5voto

Si tous ces conseils ne fonctionnent pas, vous devez recréer votre serveur (Tomcat ou autre). Cela a résolu mon problème.

5voto

Victor Points 515

Incluez les dépendances suivantes dans votre pom.xml

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

4voto

TKS Points 41

J'étais confronté au même problème. Quand j'ai vu dans le dossier .m2 du dépôt maven (....m2) \repository\org\springframework\spring -webmvc) dans mon local j'ai trouvé deux dossiers 3.2.0.RELEASE. J'en ai donc supprimé un. Puis je suis allé dans le projet, clic droit->Propriétés->Essemblement de déploiement->Ajouter des dépendances maven. clean build et ensuite redémarrer le serveur. Ensuite, le DispatcherServlet a été chargé.

3voto

Lova Chittumuri Points 621
  1. Aller à propriétés de Projet que votre travail
  2. Choisissez le Assemblée de déploiement et cliquez sur ajouter un bouton
  3. opter pour le Entrées du chemin de construction de Java et cliquez sur Dépendances Maven
  4. Construire le projet et exécutez

enter image description here

2voto

user2947452 Points 1

Dans mon cas, je rencontre ce problème après avoir utilisé l'utilitaire de mise à jour de projet de Maven. J'ai essayé toutes les solutions de contournement que vous avez suggérées, mais rien ne semble fonctionner. À la fin, la solution était simplement de supprimer le projet du serveur pour s'assurer qu'il était propre, et de l'ajouter à nouveau. Ensuite, cela fonctionne. J'espère que cette solution pourra aider l'un d'entre vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X