参考:https://blog.csdn.net/u014071434/article/details/79394491
参考:https://blog.csdn.net/noaman_wgs/article/details/81137893
使用idea查看有冲突的maven项目的pom文件,右键Diagrams->Show Dependencies,显示依赖如下
显示红线表示这个guava包存在多个版本冲突
经过分析发现swagger引入的是com.google.guava:guava:20.0
sharding-jdbc引入的是com.google.guava:guava:18.0
运行时报错,大概意思是方法不存在,并且加载的包是guava-18.0.jar
日志级别改成debug,可以看到java.lang.NoSuchMethodError
解决方案
1、移除依赖:用于排除某项依赖的依赖jar包
把低版本的jar依赖排除掉
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<!-- 引入依赖的但排除一下guava依赖 -->
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
2、版本锁定:一般用在继承项目的父项目的pom文件中
<dependencyManagement>
<dependencies>
<!-- 指定guava版本为20.0 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
</dependencies>
</dependencyManagement>