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包,启动项目,成功了!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐