目录
问题
SpringBoot在整合mybatis-plus的mapper文件时容易出现的一个问题。最近由于想把原先放在windows环境下运行的maven项目部署到ubuntu上运行,但是执行jar包时一直报错BOOT-INT/classes!/mapper/*.xml不在文件系统中,修改了下mapper路径,结果从周一修bug修到周三才解决麻透透了。下面贴一些解决思路
解决办法
- mybatis-plus扫描路径解析错误
这是我的目录结构,仅供参考,将映射文件放置在resource文件下,每一个映射文件(.xml)名需与DAO类名字对应
这里的扫描是从类路径下开始递归扫描mapper下的xml文件,其实真正解析出来是file:D:/java/projectname/src/main/resource/mapper/*.xml(路径仅供参考,对照自己项目)
按照这个处理办法我成功在windows上成功运行了项目 - 让我麻完了的是当我部署到ubuntu系统上就接着报这个错,很明显的就是xml文件加载失败
主要原因就是jar包是一个压缩包,不能够按照上述的classpath去解析出绝对路径,访问不到压缩包内部。
最简单的一个解决办法就是将你的mapper文件夹跟demo.jar(这是你打包的项目jar包)放置在同同一目录下,我这里的目录就是
|--home
|--lighthouse
|--mall
|--mapper
|--newbee-mall.jar
不知道形不形象,看不懂可以私信留言
然后根据解压路径把绝对路径写入配置文件里,注意这里一定要加上file:(别问为什么强调,问就是痛苦,修bug修了好几天才知道这是必不可少的)最后在idea里clean-package打包项目上传,sudo ./start.sh运行jar包
最后在idea里clean-package打包项目上传,sudo ./start.sh运行jar包
成功运行!
总结
这是我在大三实习期遇到最头疼的了(还有一个nacos版本兼容也花了我好几天去查资料),修bug修好几天,加上正在考研复习阶段,这个项目也算告一段落了,等我把项目用Nginx代理到服务器上会再整理出一篇博客出来介绍给大家了解。