编译Flink 1.15.0的flink-table-planner_2.12报错,如何解决类型缺失问题?
编译Flink 1.15.0的flink-table-planner_2.12时SqlExprToRexConverterFactory找不到的解决办法
编译Flink 1.15.0版本的flink-table-planner_2.12时出现以下类型找不到的错误,涉及调用Java代码的Scala文件,未修改过代码,疑似循环导入导致:
error: not found: type SqlExprToRexConverterFactory [INFO] def getSqlExprToRexConverterFactory: SqlExprToRexConverterFactory error: not found: type SqlExprToRexConverterFactory [INFO] toRexFactory: SqlExprToRexConverterFactory) error: not found: type SqlExprToRexConverterFactory [INFO] override def getSqlExprToRexConverterFactory: SqlExprToRexConverterFactory = toRexFactory
解决步骤
- 统一依赖版本:确保项目中所有Flink相关依赖(如
flink-table-api-java、flink-table-common等)的版本均为1.15.0,避免混合不同版本导致类缺失。 - 清理重构项目:执行
mvn clean install -DskipTests(Maven)或./gradlew clean build -x test(Gradle),清理旧编译缓存和中间文件,消除循环导入引发的类加载异常。 - 调整编译顺序:跨Java/Scala的循环导入问题常因编译顺序错误导致。自建项目需保证Java代码先于依赖它的Scala代码编译;编译Flink源码时,严格遵循官方步骤,指定正确Scala版本参数
-Dscala.version=2.12.15(Flink 1.15.0对应版本)。 - 校验源码完整性:确认Flink 1.15.0源码包完整,
org.apache.flink.table.planner.calcite包下的SqlExprToRexConverterFactory.java文件未缺失。Git克隆代码需执行git checkout tags/release-1.15.0,确保代码处于正确标签版本且无本地修改。 - 排查冲突依赖:通过
mvn dependency:tree(Maven)或./gradlew dependencies(Gradle)查看依赖树,排查第三方库是否引入了不同版本的Calcite或Flink组件,及时排除冲突依赖。
内容的提问来源于stack exchange,提问作者John Lee
相关产品推荐
相关产品推荐

