Kafka has been compiled by a more recent version of the Java Runtime (class file version 61.0)

  • 在 Java 8 下启动 kafka_2.13-4.0.0 的版本下报如下错误:
[root@iZwz9a93gvuoloyla40zjyZ bin]# ./kafka-server-start.sh ../config/server.properties 
Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/Kafka has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:620)
[root@iZwz9a93gvuoloyla40zjyZ bin]# java -version
java version "1.8.0_371"
Java(TM) SE Runtime Environment (build 1.8.0_371-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.371-b11, mixed mode)
[root@iZwz9a93gvuoloyla40zjyZ bin]# 

问题原因

  1. Kafka 编译版本过高
    错误信息 class file version 61.0 表示 Kafka 是用 Java 17 编译的(Java 17 对应的 Class 文件版本号为 61)。

  2. 当前 Java 版本过低
    您的系统使用的是 Java 8(1.8.0_371),其最高支持的 Class 文件版本为 52.0(对应 Java 8)。

解决方案

✅ 方案一:升级 Java 版本(推荐)

这是最直接的方法,因为较新的 Kafka 版本(3.0+)需要 Java 11+。

  1. 安装 Java 17(与 Kafka 兼容性最好):

    # 安装 OpenJDK 17
    yum install -y java-17-openjdk-devel
    
  2. 切换默认 Java 版本

    # 查看已安装的 Java 版本
    alternatives --config java
    
    # 选择 Java 17 对应的编号
    

    或手动设置环境变量:

    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. 验证版本

    java -version
    
  4. 重启 Kafka

    ./kafka-server-start.sh ../config/server.properties
    

⚠️ 方案二:降级 Kafka 版本(如需坚持使用 Java 8)

如果必须使用 Java 8,需安装兼容的 Kafka 版本(仅限 Kafka 2.8 或更早版本)。

  1. 卸载当前 Kafka
  2. 下载 Kafka 2.8.2(最后一个官方支持 Java 8 的版本):
    wget https://archive.apache.org/dist/kafka/2.8.2/kafka_2.13-2.8.2.tgz
    tar -xzf kafka_2.13-2.8.2.tgz
    cd kafka_2.13-2.8.2
    
  3. 启动 Kafka
    bin/kafka-server-start.sh config/server.properties
    

版本兼容性参考

组件 兼容版本
Kafka ≥3.0.0 需要 Java 11+
≤2.8.x 支持 Java 8
Java 8 → Class 版本 52.0
17 → Class 版本 61.0

你可能感兴趣的:(java,分布式,kafka)