Apache ShardingSphere 5.0.0-beta第三方所依赖Guava包高低版本不同互不兼容

问题抛出:

Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
at org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry.getRegisteredServices(OrderedSPIRegistry.java:90)
at org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry.getRegisteredServices(OrderedSPIRegistry.java:71)

相关Issue:https://github.com/apache/shardingsphere/issues/11537

比较发现,项目中本身其实引用了该jar包依赖的,只是版本低了,没有该方法。网上有说是Guava没有向后兼容,由其第三库再依赖guava后,容易项目里造成jar冲突,真实头疼。maven中可以通过排除Guava包便可达到兼容。

项目中的guava-16.0.1.jar版本低了,ShardingSphere 5.0.0-beta中间件应该使用guava-29.0-jre.jar

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>29.0-jre</version>
</dependency>

引用的不同第三方包所依赖的Guava冲突,也可尝试排除依赖或者将冲突的第三方依赖包分开到不同的模块POM(Maven分模块)

<exclusions>
    <exclusion>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </exclusion>
</exclusions>

猜你喜欢

转载自blog.csdn.net/u014698745/article/details/119944988