【问题标题】:kafka NoClassDefFoundError kafka/Kafkakafka NoClassDefFoundError kafka/Kafka
【发布时间】:2012-05-13 19:24:35
【问题描述】:

关于Apache-Kafka messaging queue

我已经从 Kafka 下载页面下载了 Apache Kafka。我已将其提取到/opt/apache/installed/kafka-0.7.0-incubating-src

quickstart page 说你需要启动 zookeeper,然后运行 ​​Kafka:
>bin/kafka-server-start.sh config/server.properties

我正在使用单独的 Zookeeper 服务器,因此我编辑了 config/server.properties 以指向该 Zookeeper 实例。

当我按照快速入门页面中的说明运行 Kafka 时,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: kafka/Kafka
Caused by: java.lang.ClassNotFoundException: kafka.Kafka
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: kafka.Kafka.  Program will exit.

我使用 telnet 确保可以从运行 Kafka 的机器访问 Zookeeper 实例。一切正常。

为什么会出现这个错误?

【问题讨论】:

    标签: noclassdeffounderror apache-zookeeper apache-kafka


    【解决方案1】:

    您必须首先通过运行以下命令来构建 Kafka:

    > ./sbt update
    > ./sbt package 
    

    只有这样 Kafka 才能准备好使用。

    【讨论】:

      【解决方案2】:

      只是添加到上一个答案中,如果您正在运行 IntelliJ,并且想要在 IntelliJ 中运行 Kafka 和/或单步执行它,请确保运行

      > ./sbt idea
      

      我轻松地花了半天时间尝试从头开始创建 IntelliJ 项目,结果证明我只需要一个命令就可以让它工作。另外,请确保您已安装 IntelliJ 的 Scala 插件。

      【讨论】:

        【解决方案3】:

        你应该知道

        ./sbt update
        ./sbt package
        

        默认情况下将为 Scala 2.8.0 生成 Kafka 二进制文件。如果您需要其他版本,则需要这样做

        ./sbt "++2.9.2 update"
        ./sbt "++2.9.2 package"
        

        将 2.9.2 替换为所需的版本号。这将生成适当的二进制文件。一般来说,当你切换版本时,你应该运行

        ./sbt clean
        

        清理以前版本的二进制文件。

        其实,除此之外,你可能还需要执行这个命令

        ./sbt "++2.9.2 assembly-package-dependency"
        

        此命令解析运行 Kafka 的所有依赖项,并创建一个仅包含这些依赖项的 jar。然后启动脚本会将其添加到类路径中,您应该拥有所有所需的类。

        【讨论】:

          【解决方案4】:

          似乎没有SCALA_VERSION 环境变量,可执行文件不知道如何加载必要的库。从 Kafka 安装目录尝试以下操作:

          SCALA_VERSION=2.9.3 bin/kafka-server-start.sh config/server.properties

          http://kafka.apache.org/documentation.html#quickstart

          【讨论】:

            【解决方案5】:

            您也可以使用 Apache 提供的二进制下载。

            例如从link下载kafka版本 - 0.9.0.1。

            对于其他版本,请从link2 下载并改为下载二进制版本。这些是已经构建的版本。无需使用 Scala 再次构建。

            使用正在使用源下载代替。

            【讨论】:

              【解决方案6】:

              您已下载源版本。下载 Kafka 的二进制包并继续您的测试。

              【讨论】:

              • 这个问题是 4 年前提出的。那时,源代码选项是唯一的选择。
              【解决方案7】:

              您可以在 Kafka 下载页面找到以下两个选项

              https://kafka.apache.org/downloads.html

              源码下载:
              二进制下载

              你已经下载了“kafka-0.7.0-incubating-src”它的源代码

              下载Kafka的二进制包 Scala 2.10 - kafka_2.10-0.10.1.1.tgz (asc, md5)

              【讨论】:

                猜你喜欢
                • 2017-07-22
                • 2016-04-10
                • 2020-04-28
                • 1970-01-01
                • 2017-11-17
                • 2021-02-16
                • 2019-05-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多