Spring Boot + MyBatis 启动报错:不允许有匹配 “[xX][mM][lL]“ 的处理指令目标

问题描述:

今天启动 Spring Boot 项目时,控制台报错如下:

java 复制代码
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'activityController': Unsatisfied dependency expressed through field 'activityService': Error creating bean with name 'activityService': Unsatisfied dependency expressed through field 'activityMapper': Error creating bean with name 'activityMapper' defined in file [E:\idea_code\partner_match\target\classes\com\jade\partnermatch\mapper\ActivityMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory': Error creating bean with name 'sqlSessionFactory' defined in class path resource [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception with message: Failed to parse mapping resource: 'file [E:\idea_code\partner_match\target\classes\mapper\JoinRequestMapper.xml]'

完整错误信息显示 MyBatis 在解析 ActivityMapper.xml 文件时失败。

错误原因:

经过排查,发现是 XML 文件第一行之前存在空行 导致的。

MyBatis 在解析 XML 映射文件时,要求文件的第一行必须是 XML 声明:

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>

如果这行之前有任何字符(包括空格、空行、BOM头),XML 解析器就会报错。

解决方案:

  1. 打开 ActivityMapper.xml 文件

  2. 检查第一行 <?xml version="1.0" encoding="UTF-8"?> 之前是否有空行或空格

  3. 删除所有空行,确保 XML 声明在文件的第一行

  4. 重新编译项目(mvn clean compile

  5. 重启应用

其他可能原因

如果删除空行后问题仍然存在,可以检查:

  • 文件编码:确保使用 UTF-8 无 BOM 格式保存

  • XML 声明格式:确认语法正确,没有拼写错误

  • 标签闭合:检查 XML 标签是否正确闭合

总结

这个小问题浪费了我不少时间,记录一下提醒自己:

XML 文件的第一行必须是 <?xml version="1.0" encoding="UTF-8"?>,前面不能有任何内容,包括空行!

相关推荐
平凡但不平庸的码农18 分钟前
Go 语言:值传递 vs 指针传递
开发语言·后端·golang
小碗羊肉18 分钟前
【JavaWeb | 第六篇】Mybatis
mybatis
无风听海22 分钟前
深入剖析 ASP.NET Core 的 UsePathBase
后端·asp.net
SuperherRo38 分钟前
服务攻防-开发框架安全&ThinkPHP&Laravel&SpringBoot&Struts2&SpringCloud&复现
spring boot·laravel·thinkphp·struts2·框架安全
_waylau43 分钟前
“Java+AI全栈工程师”问答01:Spring MVC登录页面错误提示
java·开发语言·vue.js·后端·spring·mvc·springcloud
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第41题】【JVM篇】第1题:JVM由哪些部分组成?
java·开发语言·jvm·后端·面试
Lee川1 小时前
登录注册模块的 JWT 认证机制详解
前端·后端·react.js
木易 士心1 小时前
深度解析:一个 Java 对象究竟占用多少字节?
java·开发语言·后端
消失的旧时光-19433 小时前
SQL 第五篇:SQL 如何真正接入 Spring Boot 项目(企业 Mapper 分层实战)
数据库·spring boot·sql
Lee川7 小时前
面试通关:JWT 认证与双 Token 机制深度解析
后端·面试