前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java Maven编译时没问题,运行时报java.lang.NoSuchMethodError

Java Maven编译时没问题,运行时报java.lang.NoSuchMethodError

作者头像
MickyInvQ
发布2020-09-27 10:39:55
1.5K0
发布2020-09-27 10:39:55
举报
文章被收录于专栏:InvQ的专栏InvQ的专栏InvQ的专栏
背景

有一个依赖,父类pom有是一个版本是1.1,但是很老了,是公共使用的。 A模块–>引用–>B模块 ,B模块中是3.3,B模块也引用C父模块 A模块的父模块C是1.1的版本。 新的方法在3.3版本中,于是在B模块中覆盖了该依赖,所以编译没问题。

问题

如题,引入了一个maven依赖,编译时没问题,但是到了,运行时就报

java.lang.NoSuchMethodError

错误

思路

1、首先排查是不是本地maven仓库的历史依赖,但是我依赖的别人的包被重新deploy了,于是很彻底 删除本地仓库依赖的jar包,重新引入,发现依赖包没变,一切照旧。 还是3.3

2、将A模块打包出来的jar包打开看了下,依赖变为了1.1

原因

在本地执行如下命令:

mvn dependency:tree > temp.txt

发现A模块,仍然引用的1.1版本,只有B模块用的3.3版本,所以在其他模块未使用新方法的时候,编译肯定可以通过,而我在引用了3.3的模块中,也没问题。 但是在A模块打包过程中,它不会使用B模块中的3.3版本,而是会引用父模块C的1.1版本。

解决

改变父类的POM的依赖为3.3,或者在A模块中覆盖父模块的1.1

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题
  • 思路
  • 原因
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档