我将flink1.15和master分支代码分别clone到本地之后。使用git工具,用官网命令mvn clean install -DskipTests编译时,出现报错
,不管我切换jdk1.8.0_391还是jdk11.进行编译都不行。mvn用的3.8.6。编译时mvn得jdk版本也随jdk版本修改的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,您在本地编译 Flink 1.15 和 master 分支代码时遇到了编译错误,即使切换了 JDK 版本(JDK 1.8.0_391 和 JDK 11)并使用 Maven 3.8.6 进行编译,问题仍然存在。以下是针对该问题的详细分析和解决方案:
在编译 Flink 项目时,确保以下环境配置正确: - Maven 版本:您使用的 Maven 3.8.6 是兼容的,但建议检查 Maven 的 settings.xml
文件是否配置了正确的镜像源或代理,以避免依赖下载失败。 - JDK 版本: - Flink 1.15 默认支持 JDK 8,因此建议优先使用 JDK 8 编译。 - 如果需要使用 JDK 11,请确认 Flink 1.15 的 pom.xml
文件中是否启用了对 JDK 11 的支持(通常需要额外配置)。 - 环境变量:确保 JAVA_HOME
指向正确的 JDK 安装路径,并且 PATH
中包含 Maven 的可执行文件。
Flink 项目依赖较多第三方库,如果某些依赖未正确下载或版本冲突,可能会导致编译失败。以下是解决方法: 1. 清理本地 Maven 缓存: 执行以下命令清理本地 Maven 缓存,重新下载依赖:
mvn dependency:purge-local-repository
mvn dependency:tree
如果发现冲突,可以在 pom.xml
中通过 <dependencyManagement>
强制指定依赖版本。
Flink 1.15 默认基于 JDK 8 构建,如果您使用 JDK 11 编译,可能会遇到以下问题: - 报错示例:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.x:compile (default-compile) on project flink-core: Fatal error compiling: invalid target release: 11
pom.xml
文件中的 maven-compiler-plugin
配置,确保目标 JDK 版本与实际使用的 JDK 匹配。例如:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
如果您尝试编译的代码中包含了阿里云实时计算 Flink 版的商业版连接器(如 MaxCompute、MySQL 等),可能会因为缺少相关依赖而报错。例如: - 报错示例:
Caused by: java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.odps.newsource.split.OdpsSourceSplitSerializer
ververica-connector-odps
),并将其添加到项目的 lib
目录或 Maven 依赖中。pom.xml
中添加以下依赖:
<dependency>
<groupId>com.alibaba.ververica</groupId>
<artifactId>ververica-connector-odps</artifactId>
<version>1.17-vvr-8.0.11-1</version>
</dependency>
如果您同时克隆了 Flink 的 master 分支代码,需要注意以下事项: - 分支兼容性:master 分支可能包含尚未发布的功能或依赖,与 Flink 1.15 不完全兼容。建议单独编译 master 分支,避免与 1.15 混用。 - 编译命令: 使用以下命令编译 master 分支代码:
mvn clean install -DskipTests -Pinclude-hadoop
参数说明: - -Pinclude-hadoop
:包含 Hadoop 相关依赖。 - -DskipTests
:跳过单元测试以加快编译速度。
export MAVEN_OPTS="-Xmx2048m -XX:MaxPermSize=512m"
-Pinclude-hadoop
参数单独编译。如果按照上述步骤仍无法解决问题,请提供具体的错误日志以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。