问题描述
在测试用mybatis查询删除方法时,报错java.io.IOException: Could not find resource MybatisConfig.xml,看了很多博主的文章,并且都尝试过了,但是都没有解决问题,最后本人亲自将mybatis的配置文件拷贝到idea的输出目录下将问题解决。
错误详情
所有的测试方法都没有通过,并且都是同样的问题,java.io.IOException: Could not find resource MybatisConfig.xml
本人项目的目录结构
我的项目目录结构完全按照mybatis相关标准进行创建的,资源文件在resources目录下,但是在读取mybatis配置文件时(in = Resources.getResourceAsStream(“MybatisConfig.xml”);)还是出现了问题
其它博主问题分析以及解决方案
1. 将放配置文件的文件夹加入到资源路径中去。
这种解决方案适用于配置文件的目录结构不符合标准,没有将配置文件放在resources目录下,或者resources资源文件夹还不是资源路径(注:如果文件夹右下方式黄色的,就说明该文件夹就是资源目录),显然本人的时没有问题的,不需要配置了。
2. 在pom文件中添加依赖
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.xml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
这段代码的意思是将资源问价夹下面的相关配置问价打包。
本人添加后,在idea的输出目录中资源目录下的文件一个也没有打包。
如图:
idea将项目的相关文件输出后,相关的配置文件一个也没有,然后运行报错也是正常的,因为输出目录下确实没有配置文件,所以报错也是正常的,反正问题此时还是未能解决
3. 用反射机制读取资源文件
InputStream in = Resources.class.getResourceAsStream("MybatisConfig.xml");
这种方式也是不行的,因为相关配置文件在输出路径中就没有,在下面创建SqlSessionFactory工厂时同样会报空指针异常的错误。
最终解决方案
手动将mybatis的配置文件拷贝到idea的输出路径中去,如图:
启动项目:
所有测试方法全部通过,bug解决。
总结
配置文件始终不能正常输出可能是模块与模块之间存在冲突(本人在项目中创建了很多重名的文件以及相似的模块)