黑鱼丶 2021-05-19 17:33 采纳率: 45.5%
浏览 115
已结题

springboot创建公共模块引入依赖,部署linux报错

报错信息:

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [tk/mybatis/mapper/autoconfigure/MapperAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'URL [jar:file:/home/war/spring/fanli/login.jar!/BOOT-INF/lib/common-0.0.1-SNAPSHOT.jar!/mapper/AccountMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.wst.common.mapper.AccountMapper.BaseResultMap

引用公共模块报错,就算没用到公共模块里面的东西也会报错

  • 写回答

3条回答 默认 最新

  • 黑鱼丶 2021-05-20 09:42
    关注

    找到原因了

    mapper-locations: classpath:mapper/*.xml,classpath*:mapper/*.xml
    
    classpath和classpath*区别: classpath:只会到你的class路径中查找找文件。 classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。 这两者后面的通配符都能起作用,只是范围不同。
    

    因为配置了

    classpath*:mapper/*.xml

    我的理解是因为classpath*,找mapper时会去\BOOT-INF\lib\找jar包中的mapper同时也会去\BOOT-INF\classes\找,因为引入了公共依赖jar,其中也包含mapper,此时就会出现两个同名的.xml所以报错重复BaseResultMap,将classpath的*去掉后问题解决了

    但实际上class下并没有包含mapper相关,看似解决了但并没有完全解决,有懂得还请指导下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月22日
  • 已采纳回答 10月14日

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。