2012-04-06 9 views
5

Il mio problema è che anche impostare "Deployment Assembly" per includere le dipendenze Maven, questo dando che il mio la classe non viene trovata, non so cos'altro fare.Maven + Spring + Dynamic Web Module (Eclipse) = java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

E lo sto solo notando con la classe ContextLoaderListener poiché altre classi sembrano essere incluse nel mio pacchetto.

Il mio file pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mkyong.common</groupId> 
    <artifactId>SpringMVC</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>SpringMVC Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <!-- <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> 
      <version>3.8.1</version> <scope>test</scope> </dependency> --> 

     <!-- Spring framework --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring</artifactId> 
      <version>2.5.6</version> 
     </dependency> 

     <!-- Spring MVC framework --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>2.5.6</version> 
     </dependency> 

     <!-- JSTL --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

     <!-- for compile only, your container should have this --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 

    </dependencies> 

    <build> 
     <finalName>SpringMVC</finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <version>1.0-beta-1</version> 
       <configuration></configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

mio file web.xml

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Spring Web MVC Application</display-name> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app> 
+0

Ho modificato la tua domanda, perché si deve solo usare l'inglese nelle vostre domande/risposte/commenti. –

+0

Non capisco cosa intendi! –

+1

Il secondo paragrafo è stato scritto in portoghese, l'ho tradotto in inglese, dobbiamo usare solo l'inglese qui così tutti possono capire –

risposta

10

Questo problema sembra essere sia a causa di:

  1. Alcuni versione della libreria non corrispondente (es. versione java per compilare! = java versione sul server di applicazioni Web).
  2. La libreria Spring obbligatoria non è inclusa durante la distribuzione.
  3. Maven archetipi utilizzati per impostare il progetto

Effettuare questa procedura per cercare di risolvere il problema:

  • In pom.xml> se si utilizza Maven-compiler-plugin, doppio controllo questo è corrispondente alla versione della libreria utilizzata, se non la modifica (ad esempio 1.7 NON 1.6).

    <plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
    </configuration> 
    </plugin> 
    
  • Se è stata modificata la versione della libreria nel passaggio precedente, quindi si deve fare: Fare clic destro sul Progetto> Maven> Aggiornamento progetto ... Se un errore è gettato in questa fase, si possono trovare te bloccato per sempre. Ho avuto questo problema e non ho potuto risolverlo. Alla fine ho rinunciato a creare il mio "Spring MVC with Maven" in Eclipse usando gli archetipi. Credo che usare archetipi incasinato le cose ... nel mio caso.

  • destro del mouse su Progetto> Proprietà> Java Build Path> JRE Sistema Bibliotecario> Modifica> scegliere la versione libreria corretta

  • Fare clic destro sul Progetto> Proprietà> Progetto sfaccettature> modulo Web dinamico (deve essere controllato)> Scheda Runtime sul lato destro del pannello> scegli il server creato (devi aver precedentemente aggiunto un server).

  • Fare clic con il tasto destro su Progetto> Proprietà> Gruppo di distribuzione> Aggiungi> Voci percorso di costruzione Java> selezionare le dipendenze Spring. Questo è da ClassNotFoundException while loading ContextLoaderListener Nota: è necessario eseguire questo passaggio ogni volta dopo aver fatto un "Maven> Progetto di aggiornamento" in Eclipse

  • ricordarsi di pulire il progetto prima di distribuirlo: Progetto> Clean ...> Progetto selezionato> pulito

  • distribuire il progetto e vedere che non rompere ... speriamo

Nel mio caso, ho dovuto riavviare un nuovo progetto senza utilizzando gli archetipi Maven per andare avanti. Ho usato queste linee guida http://gkokkinos.wordpress.com/2012/01/02/setting-up-a-spring-mvc-project-with-maven-in-eclipse/.Ho ancora generato un errore, ma l'aggiunta delle dipendenze Spring tramite Deployment Assembly (come descritto sopra) ha risolto il problema.

2

Ho avuto lo stesso problema. La soluzione semplice è fare clic con il tasto destro del mouse sul progetto di livello superiore -> Proprietà -> Deployment Assembly e includere "Dipendenze Maven". Nel mio caso questo è il mio problema. La classe DispatcherServlet non veniva inclusa nel file war, quindi non è stata trovata da Tomcat quando l'ho distribuita su quel server.

0

Avevo un problema simile e ho seguito questi passaggi per risolverlo.

  1. Scheda Server aperto in eclissi. Fai clic destro sul tuo server.
  2. Clean (Tomcat) Lavoro directory
  3. Clean (questo è diverso da quello Directory di lavoro ripulire la quale si poteva vedere nel contesto del tasto destro)
Problemi correlati