J'ai une application Spring MVC et un problème avec les tests JUnit combinés avec le fichier applicationContext.xml.
Dans ma classe de test JUnit, j'écris:
final ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
service = (TestServiceImpl) context.getBean("testServiceImpl");
L'erreur que j'obtiens est que aplicationContect.xml est introuvable:
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 se termine dans le dossier WEB-INF. Ici vous pouvez voir l'arborescence de mon projet avec le fichier applicationContext.xml: http://img28.imageshack.us/img28/2576/treexp.png
Alors, qu'est-ce qui ne va pas ici? Pourquoi le fichier n'existe-t-il pas pour le test JUnit?
Merci d'avance. Meilleures salutations.
Vous devez conserver vos fichiers Spring dans un autre dossier, marqué comme "source" (tout comme "src" ou "ressources").
WEB-INF n'est pas un dossier source, il ne sera donc pas inclus dans le chemin de classe (c'est-à-dire que JUnit n'y recherchera rien).
Le ClassPathXmlApplicationContext
ne va pas trouver le applicationContext.xml
dans votre WEB-INF
dossier, ce n'est pas sur le chemin de classe. Vous pouvez copier le contexte de l'application dans votre chemin de classe (le mettre sous src/test/resources
et laissez Maven le recopier) lors de l'exécution des tests.
J'ai eu la même erreur. Je l'ai résolu en déplaçant le fichier applicationContext.xml
dans un
sous-dossier du dossier src
. par exemple:
context = new ClassPathXmlApplicationContext("/com/ejemplo/dao/applicationContext.xml");
Si vous utilisez maven, créez un répertoire appelé resources
dans le répertoire principal, puis copiez votre applicationContext.xml
dans ça.
Depuis votre Java appel de code:
ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
J'ai également trouvé ce problème. Pour résoudre ce problème, copiez/collez ce fichier partout et exécutez-le, un fichier à la fois. Enfin, il a compilé et exécuté avec succès, puis supprimez les fichiers inutiles. L'endroit correct dans ma situation est:
C'est sous le chemin/src/(j'utilise Intellij Idea comme IDE). Les autres Java se trouvent sous/src/com/package/path
J'espère que ça aide.
Clique sur le src/main/Java
dossier et faites un clic droit et créez le fichier xml. Si vous créez le application.xml
fichier dans un sous-package autre que /
, ça ne marchera pas.
Sachez que votre structure ressemble à ceci
package/
| subpackage/
| Abc.Java
| Test.Java
/application.xml
Je l'ai résolu en déplaçant le fichier spring-context.xml dans un dossier src. Contexte ApplicationContext = new ClassPathXmlApplicationContext ("spring-context.xml");
Je l'ai corrigé en ajoutant applicationContext.xml dans jar/target/test-classes pour le projet Maven. Et utilise
XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
"/applicationContext.xml", getClass() ) )
au lieu de
XmlBeanFactory bf = new XmlBeanFactory( new ClassPathResource(
"/WEB-INF/applicationContext.xml", getClass() ) )
Cela m'arrive de temps en temps lors de l'utilisation d'Eclipse Pour une raison quelconque (bug Eclipse ??), le paramètre "exclu" obtient une valeur *. * (Chemin de génération de mon dossier de ressources)
Changez simplement l'exclusion en aucune (voir rectangle rouge vs rectangle vert) J'espère que cela aidera quelqu'un à l'avenir parce que c'était très frustrant à trouver.
Veuillez faire ce code - cela a fonctionné
AbstractApplicationContext context= new ClassPathXmlApplicationContext("spring-config.xml");
o/w: Supprimer la classe de méthode principale et la recréer lors de la recréation, veuillez décocher la méthode abstraite héritée
just change the containing package of your applicationContext.xml file.
applicationContext.xml must be in src package not in your project package.
e.g.
src(main package)
com.yourPackageName(package within src)
classes etc.
applicationContext.xml(within src but outside of yourPackage or we can say
parallel to yourPackage name)
J'utilise Netbeans, j'ai résolu mon problème en mettant le fichier dans: Paquet par défaut Autres sources, puis je l'ai appelé de cette façon:
ApplicationContext context =new ClassPathXmlApplicationContext("bean.xml");
Au printemps, tous les fichiers source se trouvent 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 Spring dans le dossier des ressources.
Assurez-vous d'avoir également l'entrée ClassPath pour vos fichiers dans src/main/resources.
Dans .classpath, vérifiez les 2 lignes suivantes. S'ils manquent, ajoutez-les.
<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");
J'ai placé le fichier applicationContext.xml dans le dossier src/main/Java et cela a fonctionné
En travaillant avec Maven, j'ai 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");
Vous devez réellement comprendre le ApplicationContext
. C'est une interface et elle aura différentes implémentations basées sur la configuration.
Comme vous utilisez new ClassPathXmlApplicationContext("applicationContext.xml");
, veuillez faire attention au côté droit initial, il est dit ClassPathXmlApplicationContext, donc le XML doit être présent dans le chemin de classe. Faites donc glisser votre applicationContext.xml où qu'il se trouve dans le dossier src.
Gist: new ClassPathXmlApplicationContext comme nom [ClassPathXml] recherchera le fichier xml dans le dossier src de votre projet, faites donc glisser votre fichier xml uniquement là-bas.
ClassPathXmlApplicationContext
— Charge une définition de contexte à partir d'un fichier XML situé dans le chemin de classe, traitant les fichiers de définition de contexte comme des ressources de chemin de classe.
FileSystemXmlApplicationContext
— Charge une définition de contexte à partir d'un fichier XML dans le système de fichiers.
XmlWebApplicationContext
— Charge les définitions de contexte à partir d'un fichier XML contenu dans une application Web.