开源
Ruo-Yi
项目引入
Mybatis-Plus:3.5.3
报错ClassNotFoundException:
Caused by:java.lang.ClassNotFoundException:com.baomidou.mybatisplus.extension.plugins.MybatisPlusInter
1 分析问题
控制台报错说明我们
引入的 mybatis-plus 的依赖
里找不到
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInter
这个类。
去查看一下。
如下图所示,我们引入的MP版本是
3.5.3
,报错显示
extesion
包里报
ClassNotFoundException
异常了。
所以,去
MP:3.5.3
包里查看一下
pom.xml
文件对应的
extesion
依赖包的版本,如下图,是
extesion:3.5.3
。
接着,去查看
extension:3.5.3
包里是否有报
ClassNotFoundException
异常的那个class文件。
如下图所示,是有的。所以我们引入的依赖没有问题。
不过也很清晰的看到,
extension
包的版本引入了两个,一个是我们引入的
3.5.3
,一个是
3.3.2
。
所以,问题大概在这个
extension:3.3.2
这个包里。去看一下,这个包里有没有报
ClassNotFoundException
异常的那个class文件。
如下图所示,没有。那么问题就发现在哪里了。我们需要的是引入的
3.5.3
版本,但是编译的时候用的是
3.3.2
这个包。
所以,这个bug的原因就是
MP依赖版本冲突
,接下来只要解决掉依赖版本冲突就行了。
2 解决问题
如下,
maven helper
插件没有识别出这个版本依赖的冲突。
发现这个依赖在
ruoyi-generate模块
里。
如下,使用
maven-helper
插件来分析
ruoyi-generate模块
。确实发现了
依赖冲突问题
,接下来需要做的事情就是,解决冲突,由于我们需要
MP-3.5.3
,不需要
MP-3.3.2
,所以这里直接排除
MP-3.3.2
就OK咯!
按理说,到这里,没有冲突就好了。
但是,
ruoyi-generate模块
里又用到了
mybatis-plus-extension
依赖,就报了如下的错。
别慌,很简单!
这里我导入了
mybatis-plus-annotation:3.5.3
的依赖,这两个报错倒是没有了,不过又出现了一个问题。
ruoyi-generate
这个模块里的这个类用到了
IdType.ID_WORKER_STR
这个枚举。
3.5.3版本
里没有这个枚举,所以该怎么解决呢?
答: 原本在这个模块里就使用了
3.3.2版本的 MP
,所以我猜想这里用到的
mybatis-plus-annotation:3.3.2
依赖肯定也被
排除exclude
了。问题又来了,我们刚才排除掉的是
mybatis-plus-extension:3.3.2
依赖,并没有排除
mybatis-plus-annotation:3.3.2
依赖。所以我大胆猜想
mp-annotation:3.3.2
依赖肯定在
mp-extension:3.3.2
依赖里。
如果是这样,由于我们确实
mp-annotation:3.3.2
依赖,所以在
ruoyi-generate
模块里直接引入这个依赖就行了。
如下来
验证
我们的
猜想
:
下同
果然,
mp-annotation:3.3.2
依赖在
mp-extension:3.3.2
依赖里被依赖了。所以我们排除掉
mp-extension:3.3.2
依赖的同时也将
mp-annotation:3.3.2
依赖排除了。
至此,在
ruoyi-generate
模块里,重新引入
mp-annotation:3.3.2
即可。
如下图,编译器在编译的时候并没有报错,
问题成功解决
!!!
版权归原作者 none_dl 所有, 如有侵权,请联系我们删除。