ClassPathXmlApplicationContext - BeanDefinitionStoreException: IOException 解析 XML 文档

ClassPathXmlApplicationContext - BeanDefinitionStoreException: IOException parsing XML document

我有一些单元测试从 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)

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

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 在哪里找资源?

谢谢, 塞尔维亚语

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