Java 11环境下Apache Flink启动报错的解决方法咨询
解决Apache Flink启动报错问题
错误分析
你遇到的报错包含两个关键问题:
- SLF4J日志绑定缺失:提示无法加载
org.slf4j.impl.StaticLoggerBinder,程序会默认使用无操作的日志实现,这部分仅影响日志输出,不会直接导致程序崩溃。 - 核心依赖缺失:
java.lang.NoClassDefFoundError: org/apache/commons/lang3/ClassUtils,这是程序崩溃的直接原因——Flink的ClosureCleaner类运行时需要该依赖类,但当前环境中找不到。
解决方案
1. 修复commons-lang3依赖缺失
在项目的pom.xml中添加commons-lang3的依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <!-- 版本建议与你使用的Flink版本兼容,例如Flink 1.17.x适配3.12.0,可根据实际情况调整 --> <version>3.12.0</version> <scope>compile</scope> </dependency>
2. 完善SLF4J日志绑定
你已添加logback-classic,但需确保SLF4J API依赖存在(部分场景下Flink会间接引入,若缺失可手动添加):
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> <!-- 与logback-classic 1.4.14兼容的版本 --> <scope>compile</scope> </dependency>
如果是打包成独立运行的Jar包,需确保依赖被正确打包(可使用maven-shade-plugin整合依赖,避免运行时缺失)。
验证操作
- 执行
mvn clean install重新构建项目 - 再次启动主方法,确认两个报错均消失
内容的提问来源于stack exchange,提问作者Jony
相关产品推荐
相关产品推荐

