【问题标题】:Kafka Consumer Example throws ClassNotFoundExceptionKafka 消费者示例抛出 ClassNotFoundException
【发布时间】:2014-04-11 02:56:02
【问题描述】:

我有使用 Scala 2.8 构建的 Kafka 0.8;从this site 开始的步骤。我还可以成功运行 kafka-console-producer 和 kafka-console-consumer 示例。我现在正在尝试Consumer Group Example(请参阅“完整源代码”部分)。我得到的异常如下:

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:622)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
    at java.lang.Thread.run(Thread.java:701)
Caused by: java.lang.NoClassDefFoundError: scala/Tuple2$mcJJ$sp
    at kafka.consumer.ConsumerConfig.<init>(Unknown Source)
    at ConsumerGroupExample.createConsumerConfig(ConsumerGroupExample.java:55)
    at ConsumerGroupExample.<init>(ConsumerGroupExample.java:18)
    at ConsumerGroupExample.main(ConsumerGroupExample.java:64)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: scala.Tuple2$mcJJ$sp
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    ... 10 more

我的依赖项如下所示:

<dependencies>
  <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka_2.10</artifactId>
    <version>0.8.0</version>
</dependency>
<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.3</version>
</dependency>
<dependency>
    <groupId>com.yammer.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>2.2.0</version>
</dependency>

作为说明,我可以使用 Python client 运行它。但我真的需要在 Java 中完成这项工作。非常感谢任何帮助!

【问题讨论】:

    标签: java scala maven noclassdeffounderror


    【解决方案1】:

    您使用的是针对 2.10 构建的 kafka(请参阅工件名称中的 _2.10)

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.0</version>
    </dependency>
    

    使用 Scala 2.8.0

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.8.0</version>
    </dependency>
    

    主要的 scala 版本(2.8.*、2.9.*、2.10.*)彼此之间是二进制不兼容的 - 选择 kafka 工件或项目的 scala 库的正确版本,一切都会好起来的。

    【讨论】:

    • 谢谢!我应该提到我是 Java 或 Scala 的新手。
    猜你喜欢
    • 2018-11-01
    • 2016-07-19
    • 1970-01-01
    • 2017-08-11
    • 2019-11-21
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    相关资源
    最近更新 更多