Spring项目卡在parsed mapper file: */*.xml
摘要:本文总结了SpringMVC+MyBatis项目中常见的XML映射文件解析问题。主要现象是DEBUG模式下持续报错解析映射文件,原因包括:1)Mapper层断点干扰;2)XML中未转义特殊字符;3)引用了未定义的实体类。解决方案包括移除断点、修正转义字符、补全缺失类定义。后续发现本地仓库jar包损坏也会导致该问题,可通过删除并重新拉取依赖解决。文中还提供了XML常用转义字符对照表作为参考。
0.背景
项目:SpringMVC+mybatis+maven
问题:debug项目的时候一直报错:
DEBUG[com.xxxx.mybatis.SqlSessionFactoryBeanExtention:389]- Parsed mapper file: '"/D:/Software/wildfly/wildfly-18.0.1-3/bin/content/xxxx-web-v1.0.9.war/WEB-INF/lib/xxx-xxxxx-4.5.0-ln.jar/mapping/mysql/xxxxxx.map.xml"'
以前没时间找原因,今天空出点时间,把这个问题简单总结一下。
1.原因分析
程序报错一直是”解析映射文件“,为啥一直要解析,主要原因是有的东西一直解析不了所以会在一直解析(非常奇怪,解析不了为啥不直接报错)。
2.解决办法
结合的实际遇到的和网上的一些方法,总结解决办法如下:
(1).把断点去掉,特别是Mapper层的断点,重新maven clean install一下
(2).在xml中注意一些转义字符,比如我们写的小于号 ”<“,不能直接写成小于号,要写成转义字符 “<”/
常见的转义符表如下:

(3).把类的引用标记清楚,不要引用一些没有定义的类。
第三个是我今天刚遇到的,有人在XML的resultType中引用了一个实体类,结果这个类忘了提交git。我下载下代码后一直报上面的错。这个是时候,你就打开XML文件,找到 ”爆红“的地方,修改即可。
3.后续新发现
今天又遇到了这个问题,上面的错误又发生了,在一一排查上面有可能的原因外,程序还是一直在刷 xxxx.xml文件。
然后发现,同事的项目正常跑,我的项目就有问题,那么大概率是我的问题。
然后继续排查这个问题,因为报错的提示一直有关是mybaits的,所以我怀疑是我本地的spring-mybatis.xml文件配置的问题。

但是,我手动在pom文件中引入依赖以后,还是一样的问题。
继续找。
然后在网上看到一篇文章说是org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 这个类中所有捕获异常打断点。
然后这个类刚好在上面图片中出现的spring-beans:5.1.7中。然后我尝试在AbstractAutowireCapableBeanFactory这个类中打断点捕获异常,但是,捕获的异常太多了(有可能是我们框架本身的问题),根本不可能一个一个分析,然后想到了一个办法,就是当不断刷刷新 …xml文件时打断点。
然后在createBean方法中捕获到了下面的异常:

发现异常中的mdb每次都指向我们仓库的一个jar包。
然后,在本地仓库中,直接手动删除这个jar包,然后重新刷新maven,重新从服务器拉取这个jar包,启动项目,成功了!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)