征文|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:Maven’s third-party dependent packages depend on different versions of guava packages, which are incompatible with each other. · Issue #11537 · apache/shardingsphere · GitHub

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

​ ​

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

com.google.guava guava 29.0-jre 引用的不同第三方包所依赖的Guava冲突,也可尝试排除依赖或者将冲突的第三方依赖包分开到不同的模块POM(Maven分模块) com.google.guava guava
5 个赞
京ICP备2021015875号