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

Apache Flink与Stateful Function:提交作业时出现NoSuchMethodError错误

问题描述
  • 技术栈:Apache Flink 1.17.0 + Stateful Functions 3.2.0(依赖statefun-flink-datastream)
  • 问题现象:编写嵌入式有状态函数代码时抛出NoSuchMethodError,IDE中能正常看到目标方法,但运行时找不到
  • 异常堆栈:
Caused by: java.lang.NoSuchMethodError: 'org.apache.flink.streaming.api.datastream.DataStream org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator.getSideOutput(org.apache.flink.util.OutputTag)'
    at org.apache.flink.statefun.flink.core.translation.Sinks.lambda$sideOutputStreams$0(Sinks.java:73) ~[?:?]
    at org.apache.flink.statefun.flink.core.common.Maps.transformValues(Maps.java:54) ~[?:?]
    at org.apache.flink.statefun.flink.core.translation.Sinks.sideOutputStreams(Sinks.java:73) ~[?:?]
    at org.apache.flink.statefun.flink.core.translation.StatefulFunctionTranslator.translate(StatefulFunctionTranslator.java:62) ~[?:?]
    at org.apache.flink.statefun.flink.core.translation.EmbeddedTranslator.translate(EmbeddedTranslator.java:61) ~[?:?]
    at org.apache.flink.statefun.flink.datastream.StatefulFunctionDataStreamBuilder.build(StatefulFunctionDataStreamBuilder.java:157) ~[?:?]
解决方案

1. 修复版本兼容性问题

Stateful Functions 3.2.0官方兼容的Flink版本为1.14.6、1.15.3,与Flink 1.17.0存在API不兼容:

  • 若要保留Flink 1.17.0,需升级Stateful Functions至3.4.0及以上版本(该版本开始支持Flink 1.17)
  • 若要保留Stateful Functions 3.2.0,需降级Flink至1.15.3版本

2. 排查并解决依赖冲突

运行时找不到方法可能是因为依赖树中混入了低版本的Flink Streaming模块:

  • Maven项目执行mvn dependency:tree,Gradle项目执行./gradlew dependencies查看依赖树
  • 找到所有引入低版本Flink的依赖,通过<exclusions>(Maven)或exclude(Gradle)排除冲突模块,确保运行时仅加载目标版本的Flink类

3. 对齐IDE与运行时依赖

IDE中能看到方法是因为编译时依赖正确,但运行时可能加载了旧版本JAR:

  • 清理项目构建缓存(Maven:mvn clean,Gradle:./gradlew clean)
  • 确认打包后的产物中仅包含目标版本的Flink和StateFun依赖,无冗余旧版本JAR

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:52:47