Подтвердить что ты не робот

Spring - applicationContext.xml не может быть открыт, потому что он не существует

У меня есть приложение Spring MVC и проблема с тестами JUnit в сочетании с файлом applicationContext.xml.

В моем тестовом классе JUnit я пишу:

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

Ошибка, которую я получаю, заключается в том, что aplicationContect.xml не найден:

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

Но он выходит из папки WEB-INF. Здесь вы можете увидеть дерево моего проекта с файлом applicationContext.xml: http://img28.imageshack.us/img28/2576/treexp.png

Итак, что здесь не так? Почему файл не существует для теста JUnit?

Спасибо заранее и с наилучшими пожеланиями.

4b9b3361

Ответ 1

Вы должны хранить ваши файлы Spring в другой папке, помеченной как "источник" (например, "src" или "resources" ).

WEB-INF не является исходной папкой, поэтому он не будет включен в путь к классам (т.е. JUnit ничего там не ищет).

Ответ 2

ClassPathXmlApplicationContext не найдет applicationContext.xml в вашей папке WEB-INF, но не в пути к классам. Вы можете скопировать контекст приложения в свой путь к классу (возможно, поставить его под src/test/resources и позволить Maven скопировать его) при запуске тестов.

Ответ 3

Я получил ту же ошибку. Я решил переместить файл applicationContext.xml в

в папке src. например:

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

Ответ 4

Если вы используете maven, создайте в главном каталоге каталог с именем resources, а затем скопируйте его applicationContext.xml в него.

Из кода java-кода:

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

Ответ 5

Я тоже нашел эту проблему. Чтобы решить эту проблему, нужно копировать/вставлять этот файл везде и запускать по одному файлу за раз. Наконец он скомпилирован и успешно запущен, а затем удалите ненужные. Правильное место в моей ситуации: enter image description here

Это в /src/path (я использую Intellij Idea в качестве IDE). Другие исходные файлы Java находятся в /src/com/package/path

Надеюсь, это поможет.

Ответ 6

Нажмите на папку src/main/java и щелкните правой кнопкой мыши и создайте XML файл. Если вы создадите файл application.xml в подпакете, отличном от /, он не будет работать.

Знай, что твоя структура выглядит так

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

/application.xml

Ответ 7

Я решил переместить файл spring -context.xml в папку src. ApplicationContext context = new ClassPaспасибоmlApplicationContext ( "spring -context.xml" );

Ответ 8

Это случается со мной время от времени при использовании eclipse. По какой-то причине (ошибка eclipse??) параметр "exclude" получает значение *. * (Путь сборки для моей папки ресурсов)

Просто измените исключение на нет (см. Красный прямоугольник против зеленого прямоугольника). Я надеюсь, что это поможет кому-то в будущем, потому что это было очень сложно найти.

excluded

Ответ 9

Я исправил это, добавив applicationContext.xml в jar/target/test-classes для проекта Maven. И использовать

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

вместо

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

Ответ 10

Я поместил applicationContext.xml в папку src/main/java и работал

Ответ 11

В Spring все исходные файлы находятся внутри src/main/java. Аналогично, ресурсы обычно хранятся внутри src/main/resources. Поэтому сохраните конфигурационный файл Spring внутри папки ресурсов.

Убедитесь, что у вас есть запись ClassPath для ваших файлов внутри src/main/resources.

В .classpath проверьте следующие 2 строки. Если они отсутствуют, добавьте их.

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

Итак, если у вас есть все на месте, то приведенный ниже код должен работать.

ApplicationContext ctx = new ClassPaспасибоmlApplicationContext ( "Spring -Module.xml" );

Ответ 12

Пожалуйста, сделайте этот код - он сработал

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

o/w: Удалить основной класс метода и воссоздать его во время воссоздания, пожалуйста, снимите флажок Унаследованный абстрактный метод его работы

Ответ 13

Я использую Netbeans, я решил свою проблему, поместив файл в: Other Sources default package, затем я назвал его следующим образом:

ApplicationContext context =new ClassPaспасибоmlApplicationContext("bean.xml");

папка ресурсов

Ответ 14

Во время работы с Maven возникла та же проблема, после чего я поместил файл XML в путь src/main/java и это сработало.

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

Ответ 15

Вы на самом деле должны понимать ApplicationContext. Это интерфейс, и он будет иметь различные реализации в зависимости от конфигурации.

Как вы используете new ClassPaспасибоmlApplicationContext("applicationContext.xml"); Пожалуйста, обратите внимание на начальную правую часть, это говорит ClassPaспасибоmlApplicationContext, поэтому XML должен присутствовать в пути к классам. Поэтому перетащите ваше applicationContext.xml, где бы оно ни находилось, в папку src.

Суть: новый ClassPaспасибоmlApplicationContext в качестве имени [ClassPaспасибоml] будет искать xml- файл в папке src вашего проекта, поэтому перетащите туда только xml файл.

P ClassPaспасибоmlApplicationContext загружает определение контекста из файла XML, расположенного в пути к классам, обрабатывая файлы определения контекста как ресурсы пути к классам.

FileSystemXmlApplicationContext загружает определение контекста из файла XML в файловой системе.

Ml XmlWebApplicationContext загружает определения контекста из файла XML, содержащегося в веб-приложении.

Ответ 16

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)