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

运行Flink 1.17.0的Sentence Encoder示例时遇RpcLoaderException错误

问题描述

我尝试运行Sentence Encoder示例,使用Apache Flink 1.17.0版本,但启动应用时出现以下错误:

Exception in thread "main" org.apache.flink.runtime.rpc.exceptions.RpcLoaderException: Could not load RpcSystem.
    at org.apache.flink.runtime.rpc.RpcSystem.load(RpcSystem.java:106)
    at org.apache.flink.runtime.minicluster.MiniCluster.lambda$new$0(MiniCluster.java:253)
    at org.apache.flink.runtime.minicluster.MiniCluster.start(MiniCluster.java:339)
    at org.apache.flink.client.program.PerJobMiniClusterFactory.submitJob(PerJobMiniClusterFactory.java:77)

我不清楚错误原因,即使已在Windows上用ncat启动了简单文本服务器。我的pom.xml配置如下:

<dependencies>
    <dependency>
        <groupId>ai.djl</groupId>
        <artifactId>api</artifactId>
        <version>0.23.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java</artifactId>
        <version>1.17.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-core</artifactId>
        <version>1.17.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>1.17.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-runtime</artifactId>
        <version>1.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-shaded-asm-9</artifactId>
        <version>9.5-17.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-metrics-core</artifactId>
        <version>1.17.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-shaded-guava</artifactId>
        <version>30.1.1-jre-16.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients</artifactId>
        <version>1.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-rpc-core</artifactId>
        <version>1.17.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-optimizer</artifactId>
        <version>1.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-shaded-netty</artifactId>
        <version>4.1.91.Final-17.0</version>
    </dependency>
    <dependency>
        <groupId>com.esotericsoftware</groupId>
        <artifactId>kryo</artifactId>
        <version>5.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
</dependencies>

调试发现错误发生在RpcSystem类执行Iterator iterator = ServiceLoader.load(RpcSystemLoader.class).iterator();语句时,目前没找到相关讨论主题。

解决方案

这个错误是Flink RPC系统实现依赖缺失导致的,ServiceLoader无法找到对应的RpcSystemLoader实现类,可按以下步骤修复:

  • 调整flink-rpc-core依赖范围:移除该依赖的<scope>provided</scope>标签,本地运行MiniCluster时需要该依赖在classpath中生效:
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-rpc-core</artifactId>
    <version>1.17.1</version>
</dependency>
  • 添加RPC实现依赖:Flink默认使用Netty作为RPC实现,需引入对应依赖(版本与Flink保持一致):
<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-rpc-netty</artifactId>
    <version>1.17.1</version>
</dependency>
  • 统一Flink版本:你使用的Flink运行环境是1.17.0,但pom.xml中依赖版本为1.17.1,版本不一致可能引发兼容性问题,建议统一为同一版本。

  • 检查ServiceLoader配置:若上述步骤无效,确认依赖包中存在META-INF/services/org.apache.flink.runtime.rpc.RpcSystemLoader文件,该文件应指向NettyRpcSystemLoader实现类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:16:11