侧边栏壁纸
博主头像
GG's Blog博主等级

行动起来,活在当下

  • 累计撰写 23 篇文章
  • 累计创建 12 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Maven依赖冲突排查

mrqinzh
2024-08-08 / 0 评论 / 0 点赞 / 11 阅读 / 2033 字

今天整理项目模块,将大量的代码、依赖搬来搬去,调整基础代码,不让报错,启动项目直接报错了,报的是 NoSuchMethodError

我也没改依赖啊,第一时间怀疑 估计idea 或者maven的缓存问题吧,清缓存重启了ide 然后又反复刷新了 maven ,再重启项目 发现还是有这个问题。那估计是代码有问题了。

我直接从日志报的这个类 LoaderOptions 看,搜索发现有 3 个项看,不同的版本,到这就很明显了,就是 maven 依赖冲突了,没有排掉多余的依赖,导致程序应用时,可能加载到了低版本的那个类,发现没有需要的方法,就抛出了异常。

看日志 应该是缺少这个方法导致 setMaxAliasesForCollections ,那就打开三个类看下到底怎么个事。

很明显,只有中间那个 1.27 版本的有这个方法,那我们就要排除掉另外那个版本的依赖。

那么问题来了,我怎么知道另外两个版本是在哪引入的呢,也不是我自己引入的外部依赖,应该是集成什么框架后,被动一起引入的。

可以从启动失败的那个模块出发

直接在这分析这个模块的依赖,简单搜索下冲突类的路径,右边就会给出这个依赖在哪应用的、有什么问题,idea已经告诉我这个依赖有冲突了。我们只需要根据上面的分析,保留 1.27 版本,排除掉 1.23 的就行了。至于上面搜索出来的 还有一个 1.20 版本的不用管,这个模块没有引用,估计是其他模块引用的,因为上面的搜索是搜的整个项目,这个分析依赖只分析指定模块,所以没有正常。

直接将 spring-cloud-starter-alibaba-nacos-discovery 下的 snakeyaml 排除掉,刷新依赖,然后启动服务。

正常启动了,没啥问题。

害 只能说依赖太多太乱了,不敢想在企业项目中重构代码,有多麻烦、恐怖。代码能跑就尽量别动了,如果不是必须的话。😂

0

评论区