gpt4 book ai didi

java - 如何修复 Kafka Producer 示例的 NoClassDefFoundError?

转载 作者:行者123 更新时间:2023-12-02 04:33:06 26 4
gpt4 key购买 nike

当我尝试编译和运行 Kafka 附带的 Producer 示例时,出现 NoClassDefFoundError 错误。我想知道如何解决下面讨论的错误?

Caveat: I am a C++/C# programmer who is Linux literate and starting to learn Java. I can follow instructions, but may well ask for some clarification along the way.

我有一个来自 Hortonworks 的 VM 沙箱,它正在运行 Red Hat 设备。在它上面,我有一个工作的卡夫卡服务器,并按照此 tutorial 进行操作。我能够让所需的生产者将消息发布到服务器。

现在我想开始编写自己的代码,但首先我决定确保我可以编译 Kafka 附带的示例文件。经过一天的尝试和错误后,我似乎无法继续下去。

这就是我正在做的事情:

我将进入示例文件所在的目录并输入:

javac -cp $KCORE:$KCLIENT:$SCORE:。 ./*.java

$KCORE:$KCLIENT:$SCORE 分别解析为 kafka core、kafka-client 和 scala 库的 jar。一切都正常返回,没有错误,并将所有类文件放在当前目录中;然而,当我跟进

javac -cp $KCORE:$KCLIENT:$SCORE:。制片人

我收到 NoClassDefFoundError 告诉我以下内容 Error screen shot

该类的代码是

package kafka.examples;

import java.util.Properties;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;

public class Producer extends Thread
{
private final kafka.javaapi.producer.Producer<Integer, String> producer;
private final String topic;
private final Properties props = new Properties();


public Producer(String topic)
{
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("metadata.broker.list", "localhost:9092");
// Use random partitioner. Don't need the key type. Just set it to Integer.
// The message is of type String.
producer = new kafka.javaapi.producer.Producer<Integer, String>(new ProducerConfig(props));
this.topic = topic;
}

public void run() {
int messageNo = 1;
while(true)
{
String messageStr = new String("Message_" + messageNo);
producer.send(new KeyedMessage<Integer, String>(topic, messageStr));
messageNo++;
}
}

}

任何人都可以指出我解决此错误的正确方向吗?由于某种原因,这些类是否需要进入不同的目录?

最佳答案

包名称是您需要在命令行上提供的类名称的一部分:

javac -cp $KCORE:$KCLIENT:$SCORE:. kafka.examples.Producer

此外,您应该位于类层次结构的根目录中,这似乎是向上两个目录(您当前位于 kafka/examples 中。或者,您可以使用 ../.. 而不是 -cp 参数中的 . 来表示根目录是向上两个目录。

您可能想熟悉使用 IntelliJ IDEA 或 Eclipse 等 IDE(以及如何在这些 IDE 中使用库),因为这将使开发变得更加容易。不过,首先要以困难的方式做事,因为您将更好地理解事物是如何拼接在一起的(IDE 基本上会在您不注意的情况下为您计算所有这些控制台命令)。

关于java - 如何修复 Kafka Producer 示例的 NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31194190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com