org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document fro

spring单元測试时发现的问题:

org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from class path resource
[spring/spring-datasource-mogon.xml]; nested exception is
java.io.FileNotFoundException: class path resource
[spring/spring-datasource-mogon.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:174)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
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:130)
at
org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451)
at
org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)
at
org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
at com.test.db.mongo.test.MongoTest.setUp(MongoTest.java:32) at
junit.framework.TestCase.runBare(TestCase.java:125) at
junit.framework.TestResult$1.protect(TestResult.java:106) at
junit.framework.TestResult.runProtected(TestResult.java:124) at
junit.framework.TestResult.run(TestResult.java:109) at
junit.framework.TestCase.run(TestCase.java:118) at
junit.framework.TestSuite.runTest(TestSuite.java:208) at
junit.framework.TestSuite.run(TestSuite.java:203) at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.io.FileNotFoundException: class path resource
[spring/spring-datasource-mogon.xml] cannot be opened because it does
not exist at
org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)
at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
… 26 morez

载入配置文件的代码例如以下:

ApplicationContext context = new ClassPathXmlApplicationContext(“spring/spring-datasource-mogon.xml”);

之前在写单元測试时也遇到过类似的问题,查询、核对代码和载入方式都没有问题,就是报错找不到文件。百思不得其解,一直以为是和环境相关。

今天在调试mongo时,最终找到问题所在了

出现故障的情况:仅仅要更新过、刷新过project,就会报如上错误;

解决的方法:

  1. 新建一个内容同样,名字不同的配置文件;比如。将配置文件/spring-datasource-mogon.xml的名字改动为/spring-datasource-mogon-1.xm

  2. 改动代码的载入配置文件为:ApplicationContext context = new ClassPathXmlApplicationContext(“spring/spring-datasource-mogon-1.xml”);

  3. 调试。发现没有上述问题了。

问题总结:

  1. 更新project后,单元測试载入的project也会刷新,刷新的时候配置文件从project环境中删掉了。

  2. 改动名字。相当于加入了一个新的文件,这时project环境中会跟着同步。

  3. 因此程序在载入新文件时能够找到。老的找不到。

  4. 单元測试载入的配置文件的路径没有找到。假设找到了能够直接将老配置文件加入到当中

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值