IOException синтаксический анализ XML-документа из ресурса пути класса

Хорошо, я сейчас пытаюсь создать проект. Однако мой проект не находит файл xml, содержащий некоторый beans. 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/combination2.xml] не может быть открыт, потому что его не существует   на org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:141)   на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)   ... еще 14

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

Ответ 1

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

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

Ответ 2

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

Например

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

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

Ответ 3

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

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

Ответ 4

You can use the relative path of the xml file.
relative path: path relative to your package where the XML file is located.

E.g. 
Assume,
package = beanfactory,  
xml file name = application-context.xml, 
and xml file in under this package.
then provide the path as "/beanfactory/application-context.xml"
ApplicationContext factory=new 
ClassPathXmlApplicationContext("/beanfactory/application-context.xml");
This works without errors.