2015-02-05 52 views
3

我正在尝试制作一个非常简单的Kafka Producer,并且目前正在遵循producer example,除了我的生产者没有分区器类。Kafka Utils错误的类路径:org.apache.kafka.common.utils.Utils

将所需文件导出到jar后,将它们传输到我的Linux映像并尝试运行它。

我得到这个异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: java.lang.NoClassDefFoundError: org/apache/kafka/common/utils/Utils 
    at kafka.client.ClientUtils$$anonfun$parseBrokerList$1.apply(ClientUtils.scala:103) 
    at kafka.client.ClientUtils$$anonfun$parseBrokerList$1.apply(ClientUtils.scala:102) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) 
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194) 
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:60) 
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:44) 
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:194) 
    at scala.collection.mutable.ArrayBuffer.map(ArrayBuffer.scala:44) 
    at kafka.client.ClientUtils$.parseBrokerList(ClientUtils.scala:102) 
    at kafka.producer.BrokerPartitionInfo.<init>(BrokerPartitionInfo.scala:32) 
    at kafka.producer.async.DefaultEventHandler.<init>(DefaultEventHandler.scala:41) 
    at kafka.producer.Producer.<init>(Producer.scala:60) 
    at kafka.javaapi.producer.Producer.<init>(Producer.scala:26) 
    at producers.HelloWorldProducer.main(HelloWorldProducer.java:20) 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.common.utils.Utils 
    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 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 19 more 

看卡夫卡罐子我看到utils是它自己的包,而不是现在位于内common后。

什么是解决此问题的最佳方法?

回答

7

答案最后真的很愚蠢......我需要使用kafka-clients-0.8.2.0.jar来代替。