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.
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).
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.
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");
j'ai eu le même message d'erreur.
Je l'ai résolu en déplaçant le fichier applicationContext.xml
dans un
sous-dossier du src
dossier. e.g:
context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml");
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:
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.
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");
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() ) )
j'ai placé l'applicationContext.xml dans le dossier src/main/java et cela a fonctionné
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");
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é
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.
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");
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");
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