mybatis中遇到Could not find resource SqlMapConfig.xml

本文介绍了解决MyBatis中SqlMapConfig.xml配置文件无法加载的问题,通过将文件夹设置为sourcefolder,成功解决了java.io.IOException异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码以及配置文件路径均没有问题,但是却出现了如下错误:

代码结构:

java.io.IOException: Could not find resource SqlMapConfig.xml
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:110)
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:97)
    at cn.mjr.mybatis.first.MybatisFirst.findUserByIdTest(MybatisFirst.java:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

测试类:

解决办法:右键点击SqlMapConfig.xml所在的文件夹(我的是config)------>Build Path------>Use as Source Folder

然后得到这样的代码结构:

再次运行得到:

问题就解决了。

 

原因:

一开始是因为默认的情况下,只有src是build path的source folder目录,自定义的文件夹在Use as Source Folder前只是一个普通的文件夹,默认的情况下不会被加载,需要手动将自定义的文件夹加载为source folder。也就是之前所说的步骤。

 

### IDEA 重启后找不到 MyBatis 配置文件的原因分析 当遇到 `Could not find resource mybatis.xml` 错误时,这表明应用程序启动过程中未能定位到指定的 MyBatis 主配置文件。此问题可能由多种因素引起。 #### 原因一:Resource 文件夹未被标记为 Resource Root 如果项目的 Resources 文件夹没有正确设置为 Resource Root,则即使该文件存在于项目结构中,在构建或运行期间也可能不会将其视为资源的一部分[^3]。 ```java // 正确的做法是在 IDE 中将 resources 目录设为 Resource Root ``` #### 原因二:Maven 构建路径不匹配 有时 Maven 的默认目标输出路径与实际期望不符,特别是对于多模块项目而言更为常见。确保 pom.xml 中 `<build>` 下的相关配置指向正确的源码和资源位置非常重要[^1]。 #### 解决方法汇总 为了彻底解决问题并防止IDEA重启之后再次发生同样的情况: - **确认资源根目录** 右键单击 project view 中的 `resources` 文件夹 -> Mark Directory As -> Resources Root[^2] - **调整主配置文件放置位置** 将 `mybatis.xml` 放置于标准 Java 源代码树下的合适位置(通常是 `/src/main/resources/`),而不是直接位于顶层项目目录下[^4]. - **清理与重建工程** 使用菜单栏中的 Build->Rebuild Project 或者命令行执行 mvn clean install 来刷新整个工作区的状态,从而让最新的更改生效. - **验证依赖项加载顺序** 对于某些复杂的场景来说,还需要检查是否有其他插件影响到了类加载器的行为模式,进而干扰了静态资源配置文件的读取过程. 通过上述措施可以有效预防由于环境变化带来的此类异常现象的发生,并保持开发流程顺畅无阻。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值