编译 flink-1.1.8源码报这个错,有大佬遇到过吗?
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.4.1:shade (shade-flink) on project flink-table-planner_2.12: Error creating shaded jar: Problem shading JAR /Users/fangwei/workspace/flink-sources/1.18/flink-release-1.18.0/flink-table/flink-table-planner/target/flink-table-planner_2.12-1.18.0.jar entry org/apache/calcite/sql/validate/SqlValidatorImpl$NavigationExpander.class: org.apache.maven.plugin.MojoExecutionException: Error in ASM processing class org/apache/calcite/sql/validate/SqlValidatorImpl$NavigationExpander.class: 19 -> [Help 1]
Error in ASM processing class,搜一下,很多说明 ,此回答整理自钉群“【①群】Apache Flink China社区”
遇到Maven编译Flink源码时出现的这类错误,通常是由于Maven插件(在这个例子中是maven-shade-plugin
)在处理依赖或构建工件过程中遇到了问题。错误信息指出在尝试创建阴影(shaded)jar包时,特定类org/apache/calcite/sql/validate/SqlValidatorImpl$NavigationExpander.class
的处理出现了问题。这里有几个可能的原因和相应的解决方法:
ASM处理错误: maven-shade-plugin
使用ASM库来操作字节码,以便进行类的重定位等操作。这个错误可能是因为ASM在处理特定类时遇到了不兼容或格式上的问题。
类冲突: 有可能是由于依赖冲突或不同版本的类库被同时包含进来了,导致ASM在处理时无法正确解析类结构。
插件版本不兼容: 特定版本的maven-shade-plugin
可能与项目中的某些依赖或构建配置不兼容。
更新插件版本: 尝试升级maven-shade-plugin
到最新版本。有时候,较新的版本已经解决了之前存在的问题。在pom.xml
中找到maven-shade-plugin
的配置,更新其版本号。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>最新版本号</version>
<!-- 其他配置 -->
</plugin>
排除冲突: 检查是否有类库冲突,特别是与calcite
相关的依赖。在pom.xml
中使用<exclusions>
标签排除可能引起冲突的依赖。
<dependency>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<exclusions>
<exclusion>
<groupId>冲突的groupId</groupId>
<artifactId>冲突的artifactId</artifactId>
</exclusion>
</exclusions>
</dependency>
清理和重试: 清理本地Maven缓存(mvn clean
),删除.m2
目录下的相关依赖,然后重新下载依赖和构建项目。
查看详细日志: 添加-X
选项到Maven命令以获得更详细的错误日志,这有助于定位问题所在。
mvn clean install -X
检查Calcite版本: 确认calcite
库的版本与Flink 1.18.0兼容。如果是在Flink源码中直接修改依赖,确保所有相关依赖都与Flink版本相匹配。
社区求助: 如果上述方法都不能解决问题,可以在Apache Flink的用户邮件列表或GitHub issue中搜索类似问题,或直接提出新的issue。Flink社区活跃且乐于助人,可能会有其他开发者遇到过相同问题并能提供帮助。
记得,当你在处理特定版本的Flink源码时,最好参考该版本的官方文档和已知问题列表,因为不同的Flink版本之间可能存在差异。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。