千家信息网

jar包版本冲突问题怎么解决

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章主要讲解了"jar包版本冲突问题怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"jar包版本冲突问题怎么解决"吧!排查:1)查看jar包
千家信息网最后更新 2024年11月24日jar包版本冲突问题怎么解决

这篇文章主要讲解了"jar包版本冲突问题怎么解决",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"jar包版本冲突问题怎么解决"吧!

排查:

1)查看jar包的版本:-XX:+TraceClassLoading 或 -verbose:class2)找到冲突的jar包:        1>idea中Maven Projects视图下,点击工具栏的第9个图标(show dependencies),稍等片刻就会出现一张显示jar包依赖关系的图。        2>红色的实线表示有冲突(右键Exclude即可解决冲突),红色的虚线表示同一个jar被多次引用的地方。

解决:

1)在pom中去除不需要的版本provided,在打包阶段就尽可能避免掉版本冲突的问题。2)如果冲突发生了,则Exclude冲突的jar包即可。

举例:

问题:Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: com.google.common.base.Splitter.splitToList(Ljava/lang/CharSequence;)Ljava/util/List;排查:        -XX:+TraceClassLoading 或 -verbose:class        排查结果:[Loaded com.google.common.base.Splitter from file:/E:/Tomcat/apache-tomcat-8.0.33/webapps/advertise-management-control/WEB-INF/lib/guava-11.0.2.jar]        在/apache-tomcat-8.0.33/webapps/ROOT/WEB-INF/lib/下发现有两个guava的jar包:guava-11.0.2.jar 和 guava-19.0.jar解决:        通过idea的show dependencies功能,发现有两个依赖分别引用了guava-11和guava-19,splitToList这个方法是guava-19提供的方法,故我们在引用guava-11的依赖中将guava Exclude后即解决了问题。

补充:

idea中Maven Projects视图下:        1)点击工具栏的第9个图标(show dependencies),稍等片刻就会出现一张显示jar包依赖关系的图。        2)红色的实线表示有冲突(右键Exclude即可解决冲突),红色的虚线表示同一个jar被多次引用的地方。                注意:                1>Exclude冲突的jar包后,需要手动到tomcat的webapps目录下将工程删掉,然后重新部署。否则的话,\webapps\project-name\WEB-INF\lib下很可能还存在(之前下载的)冲突的jar包。                2>使用mvn dependency:tree 查看jar包之间的依赖关系不太靠谱,故推荐使用idea提供的功能。

感谢各位的阅读,以上就是"jar包版本冲突问题怎么解决"的内容了,经过本文的学习后,相信大家对jar包版本冲突问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0