好的,我正在尝试将mavenise作为一个项目。但是我的项目找不到包含一些bean的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 / combined2.xml],因为它不存在 在org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:141) 在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) ......还有14个
程序在哪里可以查找此文件,因为我已经给它了相对路径?
答案 0 :(得分:32)
它正在尝试从类路径加载此文件,但无法找到它。尝试仅指定"combined2.xml"
而不是"src/main/java/resources/combined2.xml"
,并确保src / main / java / resources在您的类路径中。
顺便说一句,在Maven中,资源的标准目录是src/main/resources
,所以我建议你把这个文件放在那里。
答案 1 :(得分:1)
Maven,有资源的标准目录是src / main / resources,所以如果你把你的文件留在这里,它就会接受它。 并在路径中只提供文件名。
例如
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-context.xml");
我遇到了同样的问题
答案 2 :(得分:1)
您必须替换资源文件夹中的.xml,并输入:
String[] contextPaths = new String[] {"Xxx.xml"};
new ClassPathXmlApplicationContext(contextPaths);
如果没有任何其他配置,Spring会通过dafault在resources文件夹中搜索所有.html和.xml文件
答案 3 :(得分:0)
试试这个
appContext = new ClassPathXmlApplicationContext(
new String[] { "/**/combined2.xml", "/**/xxx.xml"});
答案 4 :(得分:0)
您可以使用xml文件的相对路径。 相对路径:相对于XML文件所在的包的路径。
E.g。 假设
package = beanfactory,
xml file name = application-context.xml,
和此包中的xml文件。 然后提供路径为“/beanfactory/application-context.xml”
ApplicationContext factory=new
ClassPathXmlApplicationContext("/beanfactory/application-context.xml");
这没有错误。
答案 5 :(得分:0)
将combined2.xml
移到您的resources
文件夹中。
如果要放置任何其他配置文件,例如applicationContext.xml
,请确保将其放在resources
文件夹中。
答案 6 :(得分:0)
将.xml
个文件保留在资源文件夹中,并像这样使用ClassPathXmlApplicationContext
:
示例:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
答案 7 :(得分:-1)
如果您使用的是 Maven,请将 Config 文件放在 Resource 文件夹下。如下图。