nested exception is java.io.FileNotFoundException: class path resource [spring/spring-datasource-mog

本文探讨了在使用Spring进行单元测试时遇到的配置文件加载问题,特别是更新工程后导致配置文件丢失的问题,并提供了相应的解决方案。通过创建新配置文件并修改加载路径,可以避免工程更新时丢失配置文件的问题。
部署运行你感兴趣的模型镜像

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.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(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时,终于找到问题所在了

出现问题的情况:只要更新过、刷新过工程,就会报如上错误;

解决办法:

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

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

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


问题总结:

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

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

3. 因此程序在加载新文件时可以找到,老的找不到。

4. 单元测试加载的配置文件的路径没有找到,如果找到了可以直接将老配置文件添加到其中

5. 遗留问题: 问什么刷新工程时,会将配置文件全部清空;这个如何避免

6. 工程的编辑存放路径和工程运行环境路径的区别是什么,工程运行环境路径是什么。



您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

对于 `java.io.FileNotFoundException: class path resource [springfox/documentation/spring/web/SpringfoxWebConfiguration.class]` 嵌套异常,可参考以下可能的解决方法: ### 检查 Maven 资源配置 Maven 默认扫描 `src/main/java` 中的文件,可能会忽略 `src/main/resources` 中的配置文件。可以在 `pom.xml` 中添加 `resource` 节点,修改 Maven 默认的扫描策略,防止配置文件打包丢失。示例代码如下: ```xml <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> ``` 这样可以确保 `src/main/java` 和 `src/main/resources` 下的所有 `.properties` 和 `.xml` 文件都被正确处理,虽然这里是针对 XML 文件,但对类文件的查找也可能有帮助 [^2]。 ### 重新编译项目 如果编译目录下不存在资源文件,编译会不成功。可以在 Eclipse 中解决此问题,选择 Eclipse 工具栏上的 `Project`,选择 `clean up`,并勾选下面的 `Build Automatically`,这样会自动编译项目。编译完成后,检查文件目录是否存在所需的资源文件 [^3]。 ### 检查依赖是否正确引入 确保 `Springfox` 相关依赖已正确添加到项目中。在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> ``` 注意要根据实际情况选择合适的版本。 ### 检查类路径配置 确保类路径配置正确,没有遗漏或错误的配置。有时候 IDE 可能会出现类路径配置问题,导致无法找到所需的类文件。可以尝试重新配置类路径或者重启 IDE。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值