2010-10-11 15 views
24

Ho un'applicazione Spring MVC e un problema con i test JUnit combinati con il file applicationContext.xml.Spring - applicationContext.xml non può essere aperto perché non esiste

Nella mia classe di test JUnit scrivo:

final ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
service = (TestServiceImpl) context.getBean("testServiceImpl"); 

L'errore che ottengo è che aplicationContect.xml non può essere trovato:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist 

Ma esce nella cartella WEB-INF. Qui potete vedere l'albero del mio progetto con il file applicationContext.xml: http://img28.imageshack.us/img28/2576/treexp.png

Allora, cosa c'è di sbagliato qui? Perché il file non esiste per il test JUnit?

Grazie in anticipo & I migliori saluti.

risposta

32

Si consiglia di conservare i file Spring in un'altra cartella, contrassegnati come "source" (come "src" o "resources").

WEB-INF non è una cartella di origine, quindi non verrà inclusa nel classpath (ad esempio, JUnit non cercherà nulla lì).

+0

grazie, signore. :) – Lucas

7

Il ClassPathXmlApplicationContext non trova lo applicationContext.xml nella cartella WEB-INF, non è sul classpath. Puoi copiare il contesto dell'applicazione nel tuo classpath (potresti metterlo sotto src/test/resources e lasciare che Maven lo copi) durante l'esecuzione dei test.

7

Ho ricevuto lo stesso errore. Ho risolto il problema spostando il file applicationContext.xml in una

sotto-cartella della cartella src. ad esempio:

context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml"); 
+0

Ho provato questo, ma non aiuta. – user657592

+0

ha funzionato perfettamente per me! – specialk1st

0

ho messo l'applicationContext.xml nella cartella src/main/java e ha funzionato

4

Se si utilizza Maven, creare una directory chiamata resources nella directory principale, e quindi copiare il vostro applicationContext.xml dentro.

Dalla vostra chiamata codice Java:

ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
4

Ho trovato anche questo problema. Che cosa ha fatto per risolvere questo è copiare/incollare questo file ovunque ed eseguire, un file alla volta. Finalmente è stato compilato ed eseguito con successo, e quindi eliminato quelli non necessari. Il posto giusto nella mia situazione è: enter image description here

Questo è sotto il/src/percorso (sto usando IntelliJ IDEA come IDE). Gli altri file di origine Java sono in/src/com/package/path

Spero che aiuti.

0

Ho risolto spostando il file spring-context.xml in una cartella src. Contesto ApplicationContext = new ClassPathXmlApplicationContext ("spring-context.xml");

0

In primavera tutti i file di origine si trovano in src/main/java. Allo stesso modo, le risorse sono generalmente mantenute all'interno di src/main/resources. Quindi mantieni il tuo file di configurazione di primavera nella cartella delle risorse.

Assicurarsi di avere anche la voce ClassPath per i file all'interno di src/main/resources.

Nel controllo .classpath per le seguenti 2 righe. Se mancano, aggiungili.

<classpathentry path="src/main/java" kind="src"/> 
<classpathentry path="src/main/resources" kind="src" /> 

Quindi, se tutto è a posto, il codice riportato di seguito dovrebbe funzionare.

ApplicationContext ctx = new ClassPathXmlApplicationContext ("Spring-Module.xml");

0

Si prega di fare Questo codice - ha funzionato

AbstractApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml"); 

o/w: Cancella classe principale metodo e ricrearla mentre ricreando deselezionare Ereditato metodo astratto sua lavorato

0

Questo mi succede di tanto in tanto quando usi eclipse Per il motivo (eclissi bug ??) il parametro "escluso" ottiene un valore *. * (percorso di compilazione per la mia cartella risorse)

Basta cambiare l'esclusione a nessuna (vedi rettangolo rosso vs rettangolo verde) Spero che questo aiuti qualcuno in futuro perché è stato molto frustrante da trovare.

excluded

Problemi correlati