IOException разбирает XML-документ из ресурса пути к классу - PullRequest
11 голосов
/ 09 мая 2011

Хорошо, сейчас я пытаюсь создать проект. Однако мой проект не может найти XML-файл, содержащий некоторые компоненты. combined2.xml

Я определил это как:

    public RepeatingGrpPoC() {
    appContext = new ClassPathXmlApplicationContext(
            new String[] { "src/main/java/resources/combined2.xml",});
    c = 0;    
}

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

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [src/main/java/resources/combined2.xml]; nested exception is java.io.FileNotFoundException: class path resource [src/main/java/resources/combined2.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:126)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:92)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at metadataPoC.RepeatingGrpPoC.<init>(RepeatingGrpPoC.java:34)
at metadataPoC.Main.main(Main.java:22)

Причина: java.io.FileNotFoundException: ресурс пути к классу [src / main / java / resources / комбинированный2.xml] не может быть открыт, потому что он не существует в org.springframework.core.io.ClassPathResource.getInputStream (ClassPathResource.java:141) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:328) ... еще 14

Где еще программа будет искать этот файл, поскольку я дал ему относительный путь?

Ответы [ 5 ]

33 голосов
/ 09 мая 2011

Он пытается загрузить этот файл из пути к классам и не может его найти. Попробуйте указать "combined2.xml" вместо "src/main/java/resources/combined2.xml" и убедитесь, что src / main / java / resources находится в вашем пути к классам.

Кстати, в Maven стандартным каталогом ресурсов является src/main/resources, поэтому я предлагаю вам поместить этот файл туда.

1 голос
/ 03 апреля 2019

Вы должны заменить ваш .xml в папке ресурсов и написать:

 String[] contextPaths = new String[] {"Xxx.xml"};
    new ClassPathXmlApplicationContext(contextPaths);

Если у вас не было никаких дополнительных настроек, все файлы .html и .xml Spring ищет в папке ресурсов по умолчанию dafault

1 голос
/ 25 мая 2015

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

Например

 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");

У меня была такая же проблема, она работала для меня

0 голосов
/ 24 февраля 2018

Вы можете использовать относительный путь к XML-файлу.Относительный путь: путь относительно вашего пакета, в котором находится файл XML.

Например, предположим,

package = beanfactory,  
xml file name = application-context.xml, 

и файл XML в этом пакете.затем укажите путь как "/beanfactory/application-context.xml"

ApplicationContext factory=new 
ClassPathXmlApplicationContext("/beanfactory/application-context.xml");

. Это работает без ошибок.

0 голосов
/ 19 января 2015

Попробуйте это

appContext = new ClassPathXmlApplicationContext(
            new String[] { "/**/combined2.xml", "/**/xxx.xml"});
...