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
会使工作变得容易得多。你用这个就不会出现这个问题了
我有一些单元测试从 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
会使工作变得容易得多。你用这个就不会出现这个问题了