Gradle项目build——kafka3.0源码报错
错误:
org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException:
Could not create task
‘:spotlessInternalRegisterDependencies’.Caused by:
org.gradle.api.tasks.TaskInstantiationException: Could not create task
of type ‘RegisterDependenciesTask’.Caused by:
java.lang.UnsupportedClassVersionError:
org/eclipse/jgit/lib/AnyObjectId has been compiled by a more recent
version of the Java Runtime (class file version 55.0), this version of
the Java Runtime only recognizes class file versions up to 52.0。
根据错误应该是版本不匹配造成的,开始使用的版本: jdk1.8, kafka3.0 scala2.11
去kafka官网查询对应的版本关系,发现 kafka3.0 不支持Java 8 和 Scala 2.12
下面是官网简述:
3.0.0
- 2021 年 9 月 21 日发布
- 发行说明
- 源码下载:kafka-3.0.0-src.tgz ( asc , sha512 )
- 二进制下载:
- Scala 2.12 - kafka_2.12-3.0.0.tgz ( asc , sha512 )
- Scala 2.13 - kafka_2.13-3.0.0.tgz ( asc , sha512 )
Kafka 3.0.0 包含许多重要的新功能。以下是一些显着变化的摘要:
- 不再支持 Java 8 和 Scala 2.12
- Kafka Raft 支持元数据主题的快照以及自我管理的仲裁中的其他改进
- 为默认启用的 Kafka 生产者提供更强的交付保证
- 弃用消息格式 v0 和 v1
- OffsetFetch 和 FindCoordinator 请求的优化
- 更灵活的 Mirror Maker 2 配置和 Mirror Maker 1 的弃用
- 能够在 Kafka Connect 中的一次调用中重新启动连接器的任务
- 现在默认启用连接器日志上下文和连接器客户端覆盖
- Kafka Streams 中时间戳同步的增强语义
- 改进了 Stream 的 TaskId 的公共 API
- Kafka 中的默认 serde 变为 null
解决办法:
安装本地环境 java11,scala 2.13.8,kafka 3.0 ,Gradle 7.2
网上看过一个关于kafka3.0与Gradle版本错误问题,由下面这段话得出, kafka 3.0 只支持 Gradle 7.0 以上的版本,所以这一点也需要注意,我编译kafka 3.0使用的是Gradle7.2。
What went wrong: A problem occurred evaluating root project ‘kafka-3.0.0-src’. Failed to apply plugin class
‘com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin’.
This version of Shadow supports Gradle 7.0+ only. Please upgrade.
一旦遇到Gradle的以上报错的解决办法:
Gradle官网(https://gradle.org/releases/)下载了version 7.2(这里kafka3.0源码,只要版本>=7.0即可),
修改idea Gradle build的配置: