You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flink CDC数据迁移时flink-shaded-guava版本切换仍报类找不到错误

问题分析与解决方案

问题核心

使用Flink 1.16.0搭配Flink CDC 3.2.0进行Oracle和SQL Server数据迁移时,遭遇flink-shaded-guava版本冲突:

  • 采用31.1-jre-17.0版本时,找不到org.apache.flink.shaded.guava30.com.google.common.collect.Lists类
  • 切换到30.1.1-jre-15.0版本时,又出现org.apache.flink.shaded.guava31.com.google.common.util.concurrent.ThreadFactoryBuilder类缺失

本质是Flink 1.16.0与Flink CDC 3.2.0依赖的guava shaded版本不一致,导致代码中同时引用了两个版本的包路径,单独切换版本无法覆盖所有依赖需求。

解决方案

1. 统一依赖版本

通过dependencyManagement强制项目所有模块使用Flink 1.16.0官方配套的flink-shaded-guava版本(30.1.1-jre-15.0),避免混合引用不同版本的shaded类。

2. 排除冲突依赖

排查Flink CDC 3.2.0中自带的guava相关依赖,将其排除,确保只使用统一指定的版本。

完整POM配置示例

<dependencyManagement>
    <dependencies>
        <!-- 强制统一guava shaded版本为Flink 1.16.0配套版本 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-shaded-guava</artifactId>
            <version>30.1.1-jre-15.0</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <!-- Flink核心依赖 -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>1.16.0</version>
    </dependency>

    <!-- Flink CDC Oracle连接器 -->
    <dependency>
        <groupId>com.ververica</groupId>
        <artifactId>flink-connector-oracle-cdc</artifactId>
        <version>3.2.0</version>
        <exclusions>
            <!-- 排除CDC自带的guava shaded依赖 -->
            <exclusion>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-shaded-guava</artifactId>
            </exclusion>
            <!-- 排除原生guava依赖 -->
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- Flink CDC SQL Server连接器 -->
    <dependency>
        <groupId>com.ververica</groupId>
        <artifactId>flink-connector-sqlserver-cdc</artifactId>
        <version>3.2.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.flink</groupId>
                <artifactId>flink-shaded-guava</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- 引入统一版本的guava shaded -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-shaded-guava</artifactId>
        <version>30.1.1-jre-15.0</version>
    </dependency>
</dependencies>

3. 验证依赖树

执行以下命令查看依赖树,确认是否还有冲突的guava版本:

mvn dependency:tree -Dverbose -Dincludes=org.apache.flink:flink-shaded-guava,com.google.guava:guava

如果输出中所有相关依赖都显示为30.1.1-jre-15.0版本,说明配置生效。

内容的提问来源于stack exchange,提问作者lamper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:05:10