问题描述
在使用mybatis过程中,程序需要读取mybatis-config.xml配置文件,IDEA默认将这个资源文件放在resource目录下,启动项目报错。内容如下:
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
java.io.IOException: Could not find resource Mybatis-config.xml
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:114)
at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:100)
at utils.MybatisUtils.<clinit>(MybatisUtils.java:29)
at dao.UserMapperTest.test(UserMapperTest.java:30)
//此处省略部分
java.lang.NullPointerException
at utils.MybatisUtils.getSqlSession(MybatisUtils.java:41)
at dao.UserMapperTest.test(UserMapperTest.java:30)
//此处省略部分
报错内容的提示很明确,找不着Mybatis-config.xml资源文件。对于这个问题,网上给出有三种解决办法,其中主要的方法是在pom文件中添加如下标签,但在程序中添加这个标签之后,错误依然存在。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
解决办法
网上给出的标签是解决找不到资源问题的核心办法,但使用该方法存在一个前提,需要src\main\下的resources目录是一个Resouces root文件夹。因此,解决这个报错有两个操作
- 在pom文件中添加标签
- 将resource目录设置为Resources Root文件夹。选中resource文件夹,右键选择Mark Directory As–>Resource Root。
延伸知识
在IDEA中,不同作用文件夹的图标是不同的。在IDEA 2020.1版本中新建的maven项目,resource文件夹默认是一般文件夹,图标如下图1。