为什么卡夫卡的消费者会扔;java.lang.NoClassDefFoundError:kafka/consumer/ConsumerConfig";启动时?

为什么卡夫卡的消费者会扔;java.lang.NoClassDefFoundError:kafka/consumer/ConsumerConfig";启动时?,java,scala,maven,apache-kafka,Java,Scala,Maven,Apache Kafka,我正在试用apache网站中给出的示例中的基本消费者代码。编辑很好。但是在使用命令java-jar target/JarName.jar运行时,我得到了ClassNotFoundException: Exception in thread "main" java.lang.NoClassDefFoundError: kafka/consumer/ConsumerConfig at com.package.ConsumerClass.functionConsumer(ConsumerCla

我正在试用apache网站中给出的示例中的基本消费者代码。编辑很好。但是在使用命令
java-jar target/JarName.jar运行时,我得到了ClassNotFoundException:

Exception in thread "main" java.lang.NoClassDefFoundError: kafka/consumer/ConsumerConfig
    at com.package.ConsumerClass.functionConsumer(ConsumerClass.java:41)
    at com.package.App.main(App.java:26)
Caused by: java.lang.ClassNotFoundException: kafka.consumer.ConsumerConfig
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
源代码是

package com.package;
import java.util.HashMap;
import java.util.Properties;
import java.util.Map;
import java.util.List;
import java.lang.Object;
import kafka.consumer.Consumer;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerConnector;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
public class ExampleConsumer {
    public void exampleConsumer(){
        Properties props = new Properties();
        props.put("zk.connect", "localhost:2181");
        props.put("zk.connectiontimeout.ms", "1000000");
        props.put("groupid", "test_group");

        ConsumerConfig consumerConfig = new ConsumerConfig(props);
        ConsumerConnector consumerConnector = (ConsumerConnector) Consumer.createJavaConsumerConnector(consumerConfig);

        Map<String, Object> topicCountMap = new HashMap<String, Object>();
        topicCountMap.put("test", new Integer(1));
        Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = (Map<String, List<KafkaStream<byte[], byte[]>>>) consumerConnector.createMessageStreams((scala.collection.Map<String, Object>) topicCountMap);
        KafkaStream<byte[], byte[]> stream = consumerMap.get("test").get(0);
        ConsumerIterator<byte[], byte[]> it = stream.iterator();
        while(it.hasNext())
            System.out.println(new String(it.next().message()));
    }
}
package.com.package;
导入java.util.HashMap;
导入java.util.Properties;
导入java.util.Map;
导入java.util.List;
导入java.lang.Object;
进口卡夫卡消费品;
导入kafka.consumer.ConsumerConfig;
导入kafka.consumer.ConsumerConnector;
导入kafka.consumer.ConsumerIterator;
进口kafka.consumer.KafkaStream;
公共类示例消费者{
public void示例消费者(){
Properties props=新属性();
props.put(“zk.connect”,“localhost:2181”);
props.put(“zk.connectiontimeout.ms”,“1000000”);
props.put(“groupid”、“test_group”);
ConsumerConfig ConsumerConfig=新的ConsumerConfig(道具);
ConsumerConnector ConsumerConnector=(ConsumerConnector)Consumer.createJavaConsumerConnector(consumerConfig);
Map topicCountMap=新HashMap();
topicCountMap.put(“测试”,新整数(1));
Map consumerMap=(Map)consumerConnector.createMessageStreams((scala.collection.Map)topicCountMap);
KafkaStream stream=consumerMap.get(“测试”).get(0);
ConsumerIterator it=stream.iterator();
while(it.hasNext())
System.out.println(新字符串(it.next().message());
}
}
我正在使用Maven进行依赖项解析。xml的依赖项部分如下所示

<dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.2.1</version>
        <scope>compile</scope>
</dependency>
        <dependency>
                <groupId>org.apache.kafka</groupId>     
                <artifactId>kafka-clients</artifactId>
                <version>0.8.2.1</version>
                <scope>compile</scope>
        </dependency>

org.apache.kafka
卡夫卡2.10
0.8.2.1
编译
org.apache.kafka
卡夫卡客户
0.8.2.1
编译

我使用的是卡夫卡2.10-0.8.2.1版本。欢迎任何建议。

java-jar目标/JarName.jar
JarName.jar
内部运行
Main类
,没有类似卡夫卡的依赖项。由于您的应用程序确实需要类路径上的依赖项JAR,因此您应该使用中解释的解决方案,或者自己构建类路径

顺便说一句,它与卡夫卡无关,只是你为它开发了一个客户


P.S.考虑使用Scala和SBT(或者也许是GeDLE),你的生活变得容易得多。

< P>为什么你使用KakkaCuffel.Cuffer-Coufg?您应该使用:

import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.ConsumerRecord;

KafkaConsumer<String, String> consumer = new KafkaConsumer
         <String, String>(props);
import org.apache.kafka.clients.consumer.KafkaConsumer;
导入org.apache.kafka.clients.consumer.ConsumerRecords;
导入org.apache.kafka.clients.consumer.ConsumerRecord;
卡夫卡消费者=新卡夫卡消费者
(道具);