2014-11-18 16 views
10

Ho appena iniziato a giocare con Spring MVC. Ho installato Intellij Idea e il server Tomcat e poi ho creato un nuovo progetto dal modello SpringMVC. Quando l'eseguo ho ottenuto l'errore:Intellij Idea Tomcat e Spring MVC template

Servlet.init() for servlet mvc-dispatcher threw exception 

ho risolto cambiando Java JDK dalla versione 1,8-1,7. Quando eseguo allora, ho ottenuto questo errore:

java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.pages.hello_jsp 

per risolvere il problema ho dovuto togliere:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 

dal mio file pom.xml ed ora sta funzionando. Qualcuno può dirmi perché questo modello non funzionerà senza queste modifiche?

risposta

24

Senza ulteriori dettagli sull'errore ottenuto, non riesco a rispondere perché è stato necessario modificare la versione di Java.

Per quanto riguarda la dipendenza da servlet-api, è perché Tomcat dispone della propria implementazione di servlet-api inclusa. Quindi c'è stato uno scontro. Quello che vorrete fare è aggiungere la dipendenza di nuovo nel vostro POM con un ambito di provided. In questo modo è lì per l'IDE da utilizzare e al momento della compilazione. (A meno che, naturalmente, non si stia utilizzando il servlet-api da altri, ad esempio la dipendenza javaee-api).

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency>