Spring-applicationContext.xml ne peut pas être ouvert car il n'existe pas

j'ai une application MVC de printemps et un problème avec les tests JUnit combinés avec le fichier applicationContext.XML.

dans ma classe de test de JUnit j'écris:

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

l'erreur que j'obtiens est que aplicationContect.xml ne peut pas être trouvé:

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

mais il sort dans le dossier WEB-INF. Ici, vous pouvez voir l'arborescence de mon projet avec l'applicationContext.fichier xml: http://img28.imageshack.us/img28/2576/treexp.png

Alors, quelle est le problème ici? Pourquoi le fichier n'existe pas pour le test Unitaire?

Merci d'avance et Meilleures salutations.

30
demandé sur Tim 2010-10-11 19:55:36

14 réponses

vous devriez conserver vos fichiers de printemps dans un autre dossier, marqué comme "source" (tout comme "src" ou "resources").

WEB-INF n'est pas un dossier source, il ne sera donc pas inclus dans classpath (i.e. JUnit ne cherchera rien là-bas).

34
répondu biasedbit 2010-10-11 16:02:20

ClassPathXmlApplicationContext ne va pas trouver le applicationContext.xml dans votre WEB-INF dossier, il n'est pas sur le chemin de la classe. Vous pouvez copier le contexte de l'application dans votre classpath (pourrait la mettre sous src/test/resources et laisser Maven le recopier en cours d'exécution des tests.

8
répondu Nathan Hughes 2016-08-01 10:12:34

Si vous utilisez maven, créez un répertoire nommé resources dans le répertoire principal, puis copiez votre applicationContext.xml.

à Partir de votre code java à l'appel:

ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
7
répondu duracell 2016-08-01 10:13:57

j'ai eu le même message d'erreur. Je l'ai résolu en déplaçant le fichier applicationContext.xmldans un

sous-dossier du srcdossier. e.g:

context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml");
7
répondu juan 2017-02-13 08:05:34

j'ai aussi constaté ce problème. Ce que do a fait pour résoudre ceci est de copier / coller ce fichier partout et de l'exécuter, un fichier par fois. Enfin, il a compilé et exécuté avec succès, puis supprimer les inutiles. Le bon endroit dans ma situation est: enter image description here

c'est sous le chemin /src/ (j'utilise Intellij Idea comme IDE). Les autres fichiers source java sont sous / src/com/ package / path

j'Espère qu'il helpes.

4
répondu BillOverFlow 2016-03-07 21:13:25

je l'ai résolu en déplaçant le fichier de printemps-contexte.xml dans un dossier src. ApplicationContext contexte = new ClassPathXmlApplicationContext("printemps-contexte.xml");

1
répondu Razi 2016-08-09 20:27:05

Je l'ai corrigé en ajoutant applicationContext.xml dans les classes jar/target/test pour le projet Maven. Et utiliser

        XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
                "/applicationContext.xml", getClass() ) )

au lieu de

        XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
                "/WEB-INF/applicationContext.xml", getClass() ) )
1
répondu Jackie Lee 2018-04-02 19:37:46

j'ai placé l'applicationContext.xml dans le dossier src/main/java et cela a fonctionné

0
répondu Chetan Punjabi 2014-05-26 16:33:45

au printemps, tous les fichiers source sont dans src/main/java. De même, les ressources sont généralement conservées dans src/main/resources. Conservez donc votre fichier de configuration de printemps dans le dossier Ressources.

assurez-vous d'avoir L'entrée ClassPath pour vos fichiers dans src/main/resources.

.classpath vérifier pour les 2 lignes. S'ils sont absents de les ajouter.

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

Donc, si vous avez tout en place le code ci-dessous devrait fonctionner.

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

0
répondu Shashesh 2017-03-01 20:26:45

s'il vous Plaît faire Ce code, il a travaillé

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

o/w: permet de Supprimer la méthode main de la classe et de le recréer tout en recréant veuillez décocher Hérité de la méthode abstraite de son travaillé

0
répondu Umesh Mundhe 2017-03-02 07:15:30

cela m'arrive de temps en temps lors de l'utilisation d'eclipse Pour une raison quelconque (eclipse bug??) le paramètre "exclu" obtient une valeur *.* (construire le chemin pour mon dossier de ressources)

il suffit de changer l'exclusion à aucun (voir rectangle rouge vs rectangle vert)) J'espère que cela aidera quelqu'un dans le futur parce que c'était très frustrant de trouver.

excluded

0
répondu user648026 2018-01-30 21:35:57

J'utilise Netbeans, j'ai résolu mon problème en mettant le fichier dans: Other Sources default package, puis je l'ai appelé de cette façon:

ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");

dossier ressources

0
répondu Eduardo Carrillo 2018-03-30 16:39:36

tout en travaillant avec Maven a eu le même problème puis j'ai mis le fichier XML dans src/main/java chemin et cela a fonctionné.

ApplicationContext context=new ClassPathXmlApplicationContext("spring.xml");
0
répondu Kushagra Sharma 2018-04-17 04:09:05

Cliquez sur le src/main/java dossier et clic droit et créer le fichier xml. Si vous créez l' application.xml le fichier dans un sous-paquetage autre que /, ça ne marchera pas.

sachez que votre structure ressemble à ceci

package/
|  subpackage/
   | Abc.java
   | Test.java

/application.xml
0
répondu Rudra Pratap Singh 2018-05-05 03:32:17