17

关于Apache-Kafka 消息队列

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

快速入门页面说您需要启动 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 实例。一切都好。

为什么我会收到此错误?

4

7 回答 7

15

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

> ./sbt update
> ./sbt package 

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

于 2012-05-04T10:35:04.407 回答
7

你应该知道

./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。然后启动脚本会将其添加到类路径中,您应该拥有所有所需的类。

于 2013-09-22T00:57:28.423 回答
4

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

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

请参阅http://kafka.apache.org/documentation.html#quickstart

于 2014-08-14T20:06:22.960 回答
1

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

> ./sbt idea

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

于 2012-05-07T19:05:12.637 回答
1

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

例如,从此链接下载 kafka 版本-0.9.0.1 。

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

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

于 2016-05-11T09:43:07.373 回答
1

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

于 2016-07-08T11:05:46.793 回答
1

您可以在 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-01-03T22:16:13.087 回答