it-swarm.com.de

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

ich verwende spring 3.1.0.RELEASE, und mein Servlet-Container ist Tomcat 7 und mein IDE ist Eclipse Indigo und das Jar spring-webmvc -3.1.0.RELEASE.jar, das das DispatcherServlet Enthält, ist im lib-Ordner vorhanden, und dennoch wird beim Ausführen der Anwendung die Ausnahme angezeigt:

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)

bitte geben Sie an, warum ich diese Ausnahme bekomme und wie Sie diese beheben können.

BEARBEITEN: Folgende sind meine Konfigurationsdateien:

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>

auch beim Versuch, auf eine Seite in der Anwendung zuzugreifen, erhalte ich die Ausnahme:

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
80
Mahmoud Saleh

ich habe festgestellt, dass in der Bereitstellungsassembly der Eintrag vorhanden war:

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

ich habe es entfernt und den maven dependencies-Eintrag hinzugefügt, und es funktioniert jetzt einwandfrei.

10
Mahmoud Saleh

Sie müssen die "Maven-Abhängigkeit" in der Bereitstellungsbaugruppe hinzufügen

  • klicken Sie mit der rechten Maustaste auf Ihr Projekt und wählen Sie Eigenschaften.
  • klicken Sie auf Deployment Assembly.
  • klicken Sie auf Hinzufügen
  • klicken Sie auf "Java Build Path Entries".
  • maven-Abhängigkeiten auswählen "
  • klicken Sie auf Fertig stellen.

Erstellen Sie sie erneut und stellen Sie sie erneut bereit

Hinweis: Dies gilt auch für non maven project.

222
krakos

Zwei mögliche Antworten:

1- Sie haben keine Spring-Beans und Spring-Context-Gläser in Ihre Bibliothek aufgenommen. Wenn Sie Maven verwenden (was sehr hilfreich ist), reichen diese beiden Zeilen aus

<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- Die erforderlichen Gläser befinden sich in Ihrem Klassenpfad, werden jedoch nicht auf Tomcat bereitgestellt. 

28

Hallo Leute, ich hatte das gleiche Problem mit Idea Intellij und Spring 4. Ich habe das Problem behoben und wollte die Antwort mit Ihnen teilen. 

Ich benutze Tomcat 7/idea intellij 13/spring 4 

pom.xml-Abhängigkeiten 

  <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>

In idea Intellij müssen Sie zu Datei -> Projekteinstellungen -> Artefakte gehen. Dann enter image description here

sauber -> Projekt neu aufbauen -> Artefakt aufbauen und alles wird in Ordnung sein ... 

18
Adelin

Dies löst das Problem für mich. Es ist einfach und ziemlich einfach erklärt. 

Schritt 1

  • Klicken Sie mit der rechten Maustaste auf Projekt
  • Klicken Sie auf Eigenschaften

Schritt 2

  • Klicken Sie in der Registerkarte Deployment Assembly auf 
  • Klicken Sie auf Hinzufügen ...

Schritt 3

  • Klicken Sie auf Java Build Path Entries

Schritt 4

  • Klicken Sie auf Maven-Abhängigkeiten
  • Klicken Sie auf die Schaltfläche Fertig stellen

Schritt 5

  • Stellen Sie Spring MVC erneut auf Tomcat bereit
  • Starten Sie Tomcat neu
  • Listenpunkt

classnotfoundexception

4
Lycone

Wenn all diese Ratschläge nicht funktionieren, sollten Sie Ihren Server (Tomcat oder ähnliches) neu erstellen. Das hat mein Problem gelöst.

4

Ich stand vor demselben Problem. Als ich in den Maven-Repository-Ordner .m2 (.... m2\repository\org\springframework\spring-webmvc) in meinem lokalen Ordner sah, fand ich zwei 3.2.0.RELEASE-Ordner. SO Ich entfernte eine Dann ging ich zu Projekt, Rechtsklick-> Eigenschaften-> Bereitstellung Essembly-> Maven-Abhängigkeiten hinzufügen . Clean Build und starten Sie den Server neu. Dann wurde das DispatcherServlet geladen.

4
TKS

Beziehen Sie die Abhängigkeit in Ihre pom.xml ein

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

In meinem Fall bekomme ich dieses Problem, nachdem ich das Hilfsprogramm für das Update-Projekt des maven verwendet habe. Am Ende bestand die Lösung darin, das Projekt einfach vom Server zu entfernen, um sicherzustellen, dass es sauber war, und es erneut hinzuzufügen. Dann funktioniert es, ich hoffe, dass diese Lösung jedem von Ihnen helfen kann.

2
user2947452

Sie können den GlassFish-Server verwenden und der Fehler wird behoben. Ich habe es mit Tomcat7 und Tomcat8 versucht, aber dieser Fehler kam kontinuierlich, wurde aber mit GlassFish behoben. Ich denke es ist ein Problem mit dem Server.

Dies sind die Ergebnisse mit Tomcat7:  Results with Tomcat7

Hier sind die Ergebnisse mit GlassFish:  Results with GlassFish

2
Superb Saif

klicken Sie mit der rechten Maustaste auf Ihr Projekt, und wählen Sie Eigenschaften aus. Klicken Sie auf Deployment Assembly. Klicken Sie auf Hinzufügen. Klicken Sie auf "Java Build Path Entries". Wählen Sie Maven-Abhängigkeiten aus. Klicken Sie auf Fertig stellen.

1
Vishal Thakur

Ich habe eine einfache Lösung gefunden, Fügen Sie einfach Ihre Gläser in den Ordner WEB-INF -> lib ein.

0
Karthik

Ich hatte das gleiche Problem in WebSphere, konnte aber keine Lösung finden, obwohl ich die Spring-Abhängigkeiten überprüft hatte und es in Tomcat einwandfrei lief. Am Ende habe ich die Anwendung deinstalliert und bekam immer noch den Fehler. Ich glaube, WebSphere hängt an einer beschädigten Instanz.

Um das Problem zu beheben, musste ich die Anwendung erneut installieren, stoppen, deinstallieren und erneut installieren.

0
flip66

Es kann für jemanden nützlich sein, also werde ich es hier posten ... Ich habe diese Abhängigkeit von meinem pom.xml vermisst.

<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>
0
luizfzs

Für mich war es ein Fehler im pom.xml - Ich hatte <scope>provided<scope> für meine Abhängigkeiten festgelegt, und dies führte dazu, dass sie in der mvn package-Phase nicht kopiert wurden.

Meine Symptome waren die vom OP veröffentlichte Fehlermeldung und die Tatsache, dass die Jars nach der Ausführung des Pakets nicht im WEB-INF/lib-Pfad innerhalb des .war enthalten waren. Als ich den Bereich entfernte, erschienen die Gläser in der Ausgabe, und alle Ladevorgänge sind jetzt in Ordnung.

0
Dan Rayson

Verschieben Sie die JAR-Dateien von Ihrem Klassenpfad nach web-inf/lib und führen Sie einen neuen Tomcat-Server aus.

0
ajai kumar

Ich habe es folgendermaßen gelöst:

  • Klicken Sie mit der rechten Maustaste in das Projekt> Konfigurieren> In Maven-Projekt konvertieren
  • Klicken Sie nach der Konvertierung mit der rechten Maustaste in das Projekt> Maven> Projekt aktualisieren

Dies behebt die "Deployment Assembly" -Einstellungen des Projekts.

0
leo