排查依赖冲突的核心思路是:先定位冲突来源 → 再分析冲突原因 → 最后选择合适的解决方式。下面按常见场景给你一套可操作的排查方法。
NoSuchMethodError、ClassNotFoundException、Method not foundmvn dependency:tree
查看某个依赖:
mvn dependency:tree -Dincludes=com.google.guava
./gradlew dependencies
重点看:
例如:
com.google.guava:guava:30.1-jre
com.google.guava:guava:31.1-jre
A 依赖 guava 30
B 依赖 guava 31
最终只保留一个版本,可能不兼容。
dependencyManagementforce、resolutionStrategy例如:
javax.annotation vs jakarta.annotationslf4j vs logback-classicmvn dependency:analyze
mvn dependency:resolve
./gradlew dependencyInsight --dependency guava
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
</dependencies>
</dependencyManagement>
configurations.all {
resolutionStrategy {
force 'com.google.guava:guava:31.1-jre'
}
}
<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
implementation('xxx:xxx:1.0') {
exclude group: 'com.google.guava'
}
jdeps、jar tf 查看类一句话流程:
看报错 → 找类 → 查依赖树 → 看版本 → 统一或排除
dependency:tree 找引入来源你可以直接贴:
dependency:tree 输出我可以帮你精确定位并给出最优解决方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。