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

Java 21集成Flink 1.20.0报错NoClassDefFoundError: Closer类缺失

核心原因

错误提示找不到org.apache.flink.shaded.guava30.com.google.common.io.Closer,本质是依赖版本不匹配:你添加的flink-shaded-guava版本(31.1-jre-17.0)和Flink 1.20.0内部依赖的Guava shaded版本不一致,Flink 1.20.0绑定的是Guava 30.x系列的shaded包。

分步解决方案

将pom.xml中的flink-shaded-guava依赖替换为对应版本:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-shaded-guava</artifactId>
    <version>30.1.1-jre-17.0</version>
    <scope>compile</scope>
</dependency>

2. 排查并排除依赖冲突

执行Maven命令查看依赖树,确认是否存在其他Guava版本干扰:

mvn dependency:tree | grep guava

如果发现非shaded的Guava或其他版本的shaded Guava,在对应依赖中排除冲突:

<dependency>
    <!-- 替换为你的实际依赖 -->
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-shaded-guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 用Flink官方Maven插件打包(可选但推荐)

使用flink-maven-plugin构建Fat Jar,它会自动处理Flink shaded依赖的打包逻辑,避免类路径冲突:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-maven-plugin</artifactId>
            <version>1.20.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>package</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

4. 验证Java 21兼容性

Flink 1.20.0官方支持Java 21,确保你的项目编译和运行环境统一使用Java 21,避免跨版本的字节码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:24:51