【问题标题】:ClassPathXmlApplicationContext - BeanDefinitionStoreException: IOException parsing XML documentClassPathXmlApplicationContext - BeanDefinitionStoreException:IOException 解析 XML 文档
【发布时间】:2016-04-11 08:02:35
【问题描述】:

我有一些从 XML 文件加载应用程序上下文的单元测试:

@BeforeClass
public static void setUp() throws Exception {
    ApplicationContext context = new ClassPathXmlApplicationContext("test-application-context.xml");

}

这会引发异常:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [test-application-context.xml]; nested exception is java.io.FileNotFoundException: class path resource [test-application-context.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:251)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:542)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)

我的单元测试类在文件夹中:

myproj/myproj-configuration-dal/src/test/java/com/mypatterns/api/data/impl/LogTest.java

资源文件在:

myproj/myproj-configuration-dal/src/test/resources/test-application-context.xml

我尝试将 xml 文件以及整个资源文件夹移动到以下位置:src 文件夹、LogTest 所在的文件夹、主文件夹(非测试源所在的位置)等等。

这到底应该在哪里? ClassPathXmlApplicationContext 在哪里找资源?

谢谢, 塞尔维亚

【问题讨论】:

  • 我相信你缺少一个斜杠,/test-application-context.xml
  • 我尝试添加一个,没有用。当你这样写:“/test-application-context.xml”时,表示这是绝对路径,所以不起作用。

标签: java xml unit-testing classpath


【解决方案1】:

事实证明,将ClassPathXmlApplicationContext 替换为FileSystemXmlApplicationContext 会使工作变得更容易。你可以用这个就不会出现这个问题了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2020-07-10
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多