运行具有 Apache Kafka 依赖项的 JAR 文件时出现 NoClassDefFoundError

问题描述 投票:0回答:1

我正在尝试运行与 Apache Kafka 集成的 Java 应用程序。代码在 IntelliJ IDEA 中成功编译并运行,但是当我尝试运行编译的 JAR 文件时,出现以下错误:

线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/kafka/clients/consumer/KafkaConsumer 在 com.blockonic.balances.ChronicleMapWebSocketServer.main(ChronicleMapWebSocketServer.java:112) 引起:java.lang.ClassNotFoundException:org.apache.kafka.clients.consumer.KafkaConsumer 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527) 这是我的java代码:

// ChronicleMapWebSocketServer.java (simplified for brevity)
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.serialization.*;

public class ChronicleMapWebSocketServer {
    public static void main(String[] args) throws Exception {
        // Configure consumer properties
        Properties config = new Properties();
        config.put(ConsumerConfig.GROUP_ID_CONFIG, "java-group-1");
        // ... other config properties

        // Create a new Kafka consumer instance
        String topic = "user-balances";
        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(config);
        consumer.subscribe(Arrays.asList(topic));

        // ... rest of the code
    }
}

这是我的 build.gradle

plugins {
    id 'application'
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'net.openhft:chronicle-map:3.24ea1'
    implementation files('build/libs/kafka-clients-3.3.1.jar')
}

jar {
    manifest {
        attributes(
            'Main-Class': 'com.blockonic.balances.ChronicleMapWebSocketServer',
            'Class-Path': 'libs/kafka-clients-3.3.1.jar'
        )
    }
}

我尝试将 Apache Kafka 客户端 JAR (kafka-clients-3.3.1.jar) 添加到 build/libs 目录,并在 build.gradle 文件的依赖项块中指定它。我还将它添加到 JAR 清单中的 Class-Path 属性中。

但是,当我运行编译后的 JAR 文件时,我仍然收到与 KafkaConsumer 类相关的 NoClassDefFoundError。

有人可以帮我理解我做错了什么以及如何解决这个问题吗?

java apache-kafka confluent-cloud
1个回答
0
投票

根据JavaDoc检查,org.apache.kafka.clients.consumer 包中没有名为“Properties”的类。那么你是在什么基础上创建这个对象的,你能澄清一下吗?

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.