请问Flink1.13.3和FlinkCDC2.4.1的guava冲突怎么解决[阿里云]

请问Flink1.13.3和FlinkCDC2.4.1的guava冲突怎么解决

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
5 条回复 A 作者 M 管理员
  1. Flink 1.13.3和Flink CDC 2.4.1中出现的guava冲突问题可能由于两个版本使用了不同的guava库版本所致。为解决此问题,您可以尝试以下方法:

    1. 排除冲突的guava依赖:在您的项目配置文件(例如pom.xml或build.gradle)中,找到引入的相关依赖项,针对其中与guava有冲突的版本,添加exclude语句以排除它们。例如,在Maven的pom.xml中:
    <dependency>  <groupId>your-dependency-groupIdgroupId>  <artifactId>your-dependency-artifactIdartifactId>  <version>your-dependency-versionversion>  <exclusions>    <exclusion>      <groupId>com.google.guavagroupId>      <artifactId>guavaartifactId>    exclusion>  exclusions>dependency>
    1. 引入统一版本的guava依赖:您可以尝试将所有依赖都指定为相同的guava版本,以消除冲突。在项目配置文件中添加一个guava依赖,并确保该版本与Flink 1.13.3和Flink CDC 2.4.1兼容。例如,在Maven的pom.xml中:
    <dependencies>  ...  <dependency>    <groupId>com.google.guavagroupId>    <artifactId>guavaartifactId>    <version>your-guava-versionversion>  dependency>  ...dependencies>
    1. 更新Flink CDC版本:如果可行的话,尝试更新Flink CDC到与Flink 1.13.3兼容的最新版本。这样可能会解决guava冲突问题,因为新版本通常会修复依赖冲突或升级到与主要框架版本兼容的较新库版本。
    • 确保您的项目中只包含一个版本的 Guava。如果您的项目依赖于其他库,而这些库也依赖于不同版本的 Guava,请使用 Maven 或 Gradle 的依赖管理功能来排除不需要的 Guava 版本。
    • 如果您的应用程序中有多个模块或子项目,并且它们分别依赖于不同的 Guava 版本,请确保每个模块都使用相同的 Guava 版本。
  2. Flink 1.13.3 和 Flink CDC 2.4.1 的 guava 冲突问题,主要因为 Flink 的不同版本会对应不同的 Guava 版本。在 Flink 1.13.3 中,它使用的 Guava 版本是 18.0-13.0,而在 Flink CDC 2.4.1 中,它使用的是 30.1.1-jre-16.0 版本。

    为了解决这个冲突,您可以采取以下措施:

    使用 Maven 或 Gradle 等构建工具,在 Flink CDC 2.4 的 pom.xml 或 build.gradle 文件中将 Guava 30 依赖替换为 Guava 18。
    运行构建命令以编译 Flink CDC。

  3. Flink 1.13.3 和 FlinkCDC 2.4.1 之间的 guava 冲突是由于它们使用了不同版本的 Guava 库。具体来说,Flink 1.13.3 使用的是 flink-shaded-guava 18.0-13.0 版本,而 FlinkCDC 2.4.1 使用的是 flink-shaded-guava 30.1.1-jre 版本。

    为了解决这个问题,您可以采取以下步骤:

    1. 使用 Maven 或 Gradle 等构建工具,在 Flink CDC 2.4 的 pom.xml 或 build.gradle 文件中将 Guava 30 依赖替换为 Guava 18。
    2. 运行构建命令编译 Flink CDC 2.4:mvn clean package 或 gradle clean build。
    3. 在编译成功后,使用打包生成的 JAR 文件来替换原始的 Flink CDC JAR 文件。