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

提交Flink任务至Web Dashboard遇入口类加载链接失败问题排查

问题描述

提交基础Flink任务到本地Apache Flink Web Dashboard(localhost:8081)时,出现以下错误:

org.apache.flink.client.program.ProgramInvocationException: The program's entry point class 'com.flink.KafkaConsumer' could not be loaded due to a linkage failure.

已成功构建Jar包,Jar内包含com.flink.KafkaConsumer类等文件,附pom.xml配置及Jar包内容:

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.flink</groupId>
<artifactId>kafkaconsumer</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <target.java.version>1.8</target.java.version>
</properties>
<dependencies>
 <dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients</artifactId>
  <version>1.15.1</version>
  <scope>provided</scope>
</dependency>
</dependencies>

<build>
<plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
      <!-- Run shade goal on package phase -->
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <createDependencyReducedPom>false</createDependencyReducedPom>
          <artifactSet>
            <excludes>
              <exclude>org.apache.flink:flink-shaded-force-shading</exclude>
              <exclude>org.slf4j:*</exclude>
              <exclude>org.apache.logging.log4j:*</exclude>
            </excludes>
          </artifactSet>
          <filters>
            <filter>
              <!-- Do not copy the signatures in the META-INF folder. Otherwise,
                this might cause SecurityExceptions when using the JAR. -->
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
          <transformers>
            <transformer
              implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
            <transformer
              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass> com.flink.KafkaConsumer </mainClass>
            </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>
</build> 

</project>

Jar包内容

META-INF/MANIFEST.MF
META-INF/
com/
com/flink/
com/flink/KafkaConsumer.class
com/flink/Main.class
META-INF/maven/
META-INF/maven/com.flink/
META-INF/maven/com.flink/kafkaconsumer/
META-INF/maven/com.flink/kafkaconsumer/pom.xml
META-INF/maven/com.flink/kafkaconsumer/pom.properties

问题排查与解决方案
  • Java版本冲突
    pom.xml中同时配置了maven.compiler.source/target=17和target.java.version=1.8,版本矛盾。Flink 1.15.x官方仅支持Java 8和11,Java 17存在兼容性风险。建议统一Java版本:
    修改properties节点为:

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <target.java.version>1.8</target.java.version>
    </properties>
    
  • 核心依赖缺失
    当前pom仅依赖flink-clients且scope为provided,作为Kafka消费任务,还需要Flink流处理核心依赖及Kafka连接器依赖。添加以下依赖(注意Kafka连接器版本需与Flink版本匹配):

    <dependencies>
        <!-- Flink流处理核心依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java</artifactId>
            <version>1.15.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- Kafka连接器依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-kafka</artifactId>
            <version>1.15.1</version>
        </dependency>
        <!-- 保留原flink-clients依赖 -->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients</artifactId>
            <version>1.15.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    

    注:如果集群未预装Kafka连接器,需将flink-connector-kafka的scope改为compile,确保shade打包时包含该依赖。

  • MainClass配置存在空格
    pom.xml中mainClass标签内的类名前后有空格:<mainClass> com.flink.KafkaConsumer </mainClass>,会导致类路径识别错误。去掉空格改为:

    <mainClass>com.flink.KafkaConsumer</mainClass>
    
  • Jar包依赖完整性问题
    从Jar内容看,仅包含自定义类,无第三方依赖。需确认:

    1. 执行mvn clean package时是否触发了shade插件的打包流程;
    2. 检查依赖的scope是否正确,需要打包的依赖不能设为provided;
    3. 重新打包后查看Jar内是否包含Flink/Kafka相关依赖类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:05:17