JavaFX+MyBatis+SQLite项目无法找到mapper/UserMapper.xml资源求助
解决MyBatis无法找到resources/mapper下XML文件的问题
问题现象
搭建JavaFX+MyBatis+SQLite项目时,将UserMapper.xml放在src/main/resources/mapper/目录下,系统报错:
Could not find resource mapper/UserMapper.xml
调试Resources.getResourceAsStream()方法时,发现系统类加载器路径未包含预期的resources路径,但将XML直接放在src/main/resources/根目录时,项目可正常运行。
排查与解决方案
1. 确认构建后资源是否存在
先检查项目构建后的输出目录:
- Maven项目查看
target/classes/ - Gradle项目查看
build/resources/main/
确认其中是否存在mapper文件夹及UserMapper.xml文件。如果没有,说明构建工具未将mapper目录下的资源文件复制到类路径中,需调整构建配置。
2. 调整构建工具配置
Maven项目(pom.xml)
在<build>节点下添加资源配置,确保包含resources目录下所有子文件夹及文件:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </build>
Gradle项目(build.gradle)
配置sourceSets确保resources目录下所有资源被正确打包:
sourceSets { main { resources { srcDirs = ['src/main/resources'] includes = ['**/*'] } } }
3. 检查MyBatis核心配置文件路径
打开MyBatis配置文件(如mybatis-config.xml),确认mapper的资源路径配置正确:
- 直接指定XML文件时,使用类路径相对路径,不要加前导斜杠:
<mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers>
- 也可以使用包扫描方式(需确保Mapper接口与XML文件名一致,且接口所在包对应类路径中的mapper目录):
<mappers> <package name="com.yourproject.mapper"/> </mappers>
4. IDE刷新与重新构建
如果是IDE(如IntelliJ IDEA)中运行,执行以下操作:
- 右键项目 →
Reload All Maven Projects(Maven项目)或Refresh Gradle Project(Gradle项目) - 执行
Build → Rebuild Project,确保资源文件被同步到输出目录
内容的提问来源于stack exchange,提问作者qcrrm
相关产品推荐
相关产品推荐

