KafkanoclassdeffounderrorKafka/Kafka

58wvjzkj  于 2021-06-07  发布在  Kafka
关注(0)|答案(7)|浏览(266)

关于ApacheKafka消息队列。
我已经从Kafka下载页面下载了apachekafka。我把它提取出来 /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来确保zookeeper示例可以从kafka运行的机器上访问。一切都好。
为什么我会犯这个错误?

gpfsuwkq

gpfsuwkq1#

为了补充前面的答案,如果您正在运行intellij,并且希望在intellij中运行kafka和/或逐步完成它,请确保运行

> ./sbt idea

我花了半天的时间试图从头开始创建intellij项目,结果证明,我只需要一个命令就可以让它工作。另外,请确保安装了用于intellij的scala插件。

cu6pst1q

cu6pst1q2#

似乎没有 SCALA_VERSION 环境变量,可执行文件不知道如何加载所需的库。从kafka安装目录中尝试以下操作: SCALA_VERSION=2.9.3 bin/kafka-server-start.sh config/server.properties 看到了吗http://kafka.apache.org/documentation.html#quickstart.

bis0qfac

bis0qfac3#

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

> ./sbt update
> ./sbt package

只有到那时,Kafka才能投入使用。

h7wcgrx3

h7wcgrx34#

您还可以使用apache提供的二进制下载。
例如,从这个链接下载Kafka版本-0.9.0.1。
对于其他版本,请从link2下载并下载二进制版本。这些是已生成的版本。不需要使用scala再次构建。
我们使用的是源代码下载。

sirbozc5

sirbozc55#

你可以在Kafka下载页面上找到以下两个选项
https://kafka.apache.org/downloads.html
源下载:
二进制下载
您已经下载了“kafka-0.7.0-incubating-src”it的源代码
下载kafka scala 2.10-kafka_2.10-0.10.1.1.tgz二进制软件包(asc,md5)

fcwjkofz

fcwjkofz6#

你应该知道的

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

polhcujo

polhcujo7#

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

相关问题