开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

guava包的问题

在解决Flink1.13.3和FlinkCDC2.4.1的guava冲突时,将Flink中的guava排除,加上30.1.1-jre-16.0报org.apache.flink.shaded.guava18.com.google.common.collect.Lists,如果将FlinkCDC中的guava排除,加上18.0-13.0版本,报 org.apache.flink.shaded.guava30.com.google.common.util.concurrent.ThreadFactoryBuilder,这应该怎么解决

展开
收起
oa3jrmgwotcw6 2023-12-19 16:52:09 460 0
1 条回答
写回答
取消 提交回答
  • 这个问题看起来是由于Flink和FlinkCDC中使用的Guava版本不一致导致的。Flink 1.13.3可能使用了Guava 18.0,而FlinkCDC 2.4.1可能使用了Guava 30.1.1。以下是一些可能的解决步骤:

    1. 统一Guava版本:
      尝试将整个项目中的Guava版本统一为一个兼容的版本。这可能需要对Flink和FlinkCDC的依赖项进行一些调整。你已经尝试过将FlinkCDC的Guava版本降级到18.0和将Flink的Guava升级到30.1.1,但都遇到了问题。可能需要找到一个既能被Flink接受又能被FlinkCDC接受的中间版本。
    2. shading Guava:
      另一种可能的解决方案是使用shade插件来重命名Guava的包名,以避免版本冲突。在Flink或FlinkCDC的构建过程中,你可以配置shade插件来将Guava的包名(例如com.google.common)重命名为一个唯一的名称(例如com.myproject.guava)。这样,即使两个库使用了不同版本的Guava,也不会因为包名冲突而出现问题。
    3. 检查其他依赖:
      确保你的项目中没有其他依赖项也引入了不同的Guava版本。如果有,你可能需要调整这些依赖项的版本或者使用 exclusions 标签来排除它们自带的Guava。
    2023-12-19 17:12:00
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载