ik gebruik spring 3.1.0.RELEASE, en mijn servlet-container is tomcat 7en mijn IDE is eclipse indigo
en de jar spring-webmvc-3.1.0.RELEASE.jardie de DispatcherServletbevat
bestaat in de lib-map, en toch krijg ik bij het uitvoeren van de toepassing de uitzondering:
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)
geef me aan waarom ik deze uitzondering krijg en hoe ik deze kan oplossen.
EDIT: hier volgen mijn configuratiebestanden:
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>
ook wanneer ik een pagina in de applicatie probeer te openen, krijg ik de uitzondering:
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
Antwoord 1, autoriteit 100%
U moet de “Maven Dependency” toevoegen aan de Deployment Assembly
- klik met de rechtermuisknop op uw project en kies eigenschappen.
- klik op Deployment Assembly.
- klik op toevoegen
- klik op “Java Build Path Entries”
- selecteer Maven-afhankelijkheden”
- klik op Voltooien.
Opnieuw opbouwen en opnieuw implementeren
Opmerking: dit is ook van toepassing op non maven-projecten.
Antwoord 2, autoriteit 13%
Twee mogelijke antwoorden:
1- Je hebt geen lentebonen en lente-context potten in je lib opgenomen.
Als u maven gebruikt (wat veel zal helpen), zijn die twee regels voldoende
<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- De benodigde jars staan in je classpath, maar worden niet op Tomcat ingezet.
Antwoord 3, autoriteit 7%
Ik had hetzelfde probleem met Idea Intellij en Spring 4. Ik heb het probleem opgelost en ik wilde het antwoord met je delen.
Ik gebruik Tomcat 7 / idea intellij 13 / spring 4.
pom.xml-afhankelijkheden:
<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 idee Intellij, moet je naar Bestand -> Projectinstellingen -> Artefacten.
Dan
schoon -> herbouw het project -> bouw het artefact en alles komt goed.
Antwoord 4, autoriteit 5%
Dit lost het probleem voor mij op. Het is gemakkelijk en vrij eenvoudig uitgelegd.
Stap 1
- Klik met de rechtermuisknop op project
- Klik op Eigenschappen
Stap 2
- Klik op het tabblad Deployment Assembly in de
- Klik op Toevoegen…
Stap 3
- Klik op Java Build Path Entries
Stap 4
- Klik op Maven Dependencies
- Klik op de knop Voltooien
Stap 5
- Spring MVC-toepassing Spring opnieuw naar Tomcat
- Herstart Tomcat
- Lijstitem
Antwoord 5, autoriteit 4%
ik ontdekte dat in de deployment assemblyde volgende vermelding stond:
[persisted container] org.maven.ide.eclipse.maven2_classpath_container
ik heb het verwijderd en het item maven dependencies
toegevoegd, en het werkt nu prima.
Antwoord 6, autoriteit 2%
Als al deze adviezen niet werken, moet u uw server opnieuw maken (Tomcat of iets dergelijks). Dat loste mijn probleem op.
Antwoord 7, autoriteit 2%
Neem onderstaande afhankelijkheid op in uw pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>{spring-version}</version>
</dependency>
Antwoord 8, autoriteit 2%
Ik had hetzelfde probleem. Toen ik de map Maven repository .m2 (….m2\repository\org\springframework\spring-webmvc) in mijn lokale map zag, vond ik twee 3.2.0.RELEASE-mappen. DUS heb ik er een verwijderd.
Toen ging ik naar project, klik met de rechtermuisknop->properties->deployment essembly-> voeg maven afhankelijkheden toe.
clean build en start de server opnieuw op.
Toen werd de DispatcherServlet geladen.
Antwoord 9
- Ga naar eigenschappenvan Projectwaaraan u werkt
- Kies het menu Deployment Assemblyen klik op de knop toevoegen
- kies de Java Build Path Entriesen klik op Maven Dependencies
- Bouwhet project en voer het uit
Antwoord 10
In mijn geval krijg ik dit probleem na het gebruik van het updateprojecthulpprogramma van de maven.
Ik heb alle door jou voorgestelde oplossingen geprobeerd, maar niets leek te werken.
Uiteindelijk was de oplossing gewoon om het project van de server te verwijderen om ervoor te zorgen dat het schoon was, en het opnieuw toe te voegen. Dan werkt het, ik hoop dat deze oplossing jullie kan helpen.
Antwoord 11
U kunt de GlassFish-server gebruiken en de fout zal worden opgelost. Ik heb het geprobeerd met tomcat7 en tomcat8, maar deze fout kwam continu maar werd opgelost met GlassFish. Ik denk dat het een probleem is met de server.
Dit zijn de resultaten met tomcat7:
Hier zijn de resultaten met GlassFish:
Antwoord 12
klik met de rechtermuisknop op uw project en kies eigenschappen.
klik op Implementatie Montage.
klik op toevoegen
klik op “Java Build Path Entries”
selecteer Maven-afhankelijkheden”
klik op Voltooien.
Antwoord 13
Het kan nuttig zijn voor iemand, dus ik zal het hier posten.
Ik miste deze afhankelijkheid van mijn 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>
Antwoord 14
Ik heb het opgelost door deze stappen te volgen:
- Klik met de rechtermuisknop in het project > Configureer > Converteren naar Maven-project
- Klik na de conversie met de rechtermuisknop in het project > Maven > Project bijwerken
Dit corrigeert de “Deployment Assembly”-instellingen van het project.
Antwoord 15
Verplaats de jar-bestanden van uw klassenpad naar web-inf/liben voer een nieuwe Tomcat-server uit.
Antwoord 16
Ik heb een eenvoudige oplossing gevonden,
Voeg eenvoudig uw potten toe aan de WEB-INF–>lib-map..
Antwoord 17
Ik had hetzelfde probleem in WebSphere, maar kon geen oplossing vinden, ook al heb ik geverifieerd dat de Spring-afhankelijkheden aanwezig waren en het werkte prima in tomcat. Ik heb de applicatie uiteindelijk verwijderd en kreeg nog steeds de foutmelding, dus ik denk dat WebSphere vasthield aan een corrupte instantie.
Om het probleem op te lossen moest ik de applicatie opnieuw installeren, stoppen, verwijderen en opnieuw installeren.
Antwoord 18
Voor mij was het een fout in de pom.xml
– ik had <scope>provided<scope>
ingesteld op mijn afhankelijkheden, en dit maakte ze niet gekopieerd worden tijdens de fase mvn package
.
Mijn symptomen waren de foutmelding die het OP plaatste, en dat de jars niet waren opgenomen in het WEB-INF/lib-pad binnen de .war nadat het pakket was uitgevoerd. Toen ik het bereik verwijderde, verschenen de potten in de uitvoer en alles wordt nu goed geladen.