Maven构建Apache Flink项目时无法找到org.apache.flink.formats包
解决Maven构建Flink项目时“package org.apache.flink.formats does not exist”编译错误
问题原因
你在pom.xml中添加的flink-formats是POM类型的聚合依赖,它仅用于模块管理,不会将具体的格式实现类引入项目,因此编译时无法找到org.apache.flink.formats下的相关包。
解决方案
替换pom中的flink-formats依赖,根据你实际使用的格式类型,添加对应的具体实现依赖:
- 若使用JSON格式:
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-formats-json</artifactId> <version>1.18.1</version> <!-- 集群运行时设为provided,本地开发则移除该scope --> <scope>provided</scope> </dependency>
- 若同时使用多种格式(如JSON+CSV),可添加多个对应依赖:
<!-- JSON格式依赖 --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-formats-json</artifactId> <version>1.18.1</version> <scope>provided</scope> </dependency> <!-- CSV格式依赖 --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-formats-csv</artifactId> <version>1.18.1</version> <scope>provided</scope> </dependency>
额外注意事项
- 确保所有Flink依赖版本统一:你的pom中
flink-core指定了1.18.1,而flink-java和flink-streaming-java使用${flink.version}变量,需保证该变量值也是1.18.1,避免版本冲突。 - 本地开发时,移除依赖的
providedscope:本地环境没有Flink集群的类加载环境,需要将依赖包纳入本地classpath才能正常编译运行。
你提供的原始pom依赖片段
<dependencies> <!-- Apache Flink dependencies --> <!-- These dependencies are provided, because they should not be packaged into the JAR file. --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_${scala.binary.version}</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-parquet</artifactId> <version>1.18.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.parquet</groupId> <artifactId>parquet-avro</artifactId> <version>1.13.1</version> <optional>true</optional> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> </exclusion> <exclusion> <groupId>it.unimi.dsi</groupId> <artifactId>fastutil</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.avro</groupId> <artifactId>avro</artifactId> <version>1.11.3</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-files</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-avro</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-formats</artifactId> <version>1.18.1</version> <type>pom</type> </dependency> </dependencies>
内容的提问来源于stack exchange,提问作者Vanday Bundu
相关产品推荐
相关产品推荐

