jar 包冲突解决办法

来源:互联网 发布:占卜软件哪个好 编辑:程序博客网 时间:2024/06/05 03:36


jar包冲突常见的异常为找不到类(java.lang.ClassNotFoundException)、

找不到具体方法(java.lang.NoSuchMethodError)、

字段错误( java.lang.NoSuchFieldError)

或者类错误(java.lang.LinkageError);


1 通过mvn dependency:tree  >  tree.txt 导出全部的依赖。 可以使用 -Dverbose 、-Dincludes或者-Dexcludes参数来精确定位导致冲突的jar包。

这里我们对我们执行的命令做一个简单的说明。
mvn dependency:tree -Dverbose -Dincludes=<groupId>:<artifactId>
第一部分mvn dependency:tree是maven依赖的分析命令,作用是对我们的项目的依赖进行分析,并输出项目依赖树
第二部分-Dverbose的作用是添加了verbose一个环境变量,起的作用是在分析项目依赖时输出明细,这样项目中依赖的所有引用都会被输出出来,包含了所有的间接引用,会有很多很多,我们只需要我们要找的,所以就需要第三个参数了

第三部分-Dincludes=<groupId>:<artifactId>的作用就是进行过滤,只包含我们想要的依赖的依赖时,排除掉其它不需要的,依赖树的所有叶子节点就是我们的找的依赖包。其中的groupId和artifactId可以只填写一个,为了保证准确性,一般都会填两个(填写时不包括尖括号)。


对于maven工程,使用eclipse来解决,点开pom.xml,切换到hierarchy dependency,右上角搜索对应的包,可以清晰地看到冲突版本。

可以使用添加jvm参数的方式启动程序,将类加载的具体jar信息打印出来;-verbose:class

原创粉丝点击