kafka NoClassDefFoundError kafka / Kafka

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka NoClassDefFoundError kafka / Kafka相关的知识,希望对你有一定的参考价值。

关于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实例。一切都好。

为什么我会收到此错误?

答案

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

> ./sbt update
> ./sbt package 

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

另一答案

你应该知道

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

另一答案

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

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

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

另一答案

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

> ./sbt idea

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

另一答案

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

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

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

使用正在使用源下载。

另一答案

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

另一答案

您可以在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)

以上是关于kafka NoClassDefFoundError kafka / Kafka的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.NoClassDefFoundError

flink1.7.2 升级1.13.6问题集

大数据技术之_10_Kafka学习_Kafka概述+Kafka集群部署+Kafka工作流程分析+Kafka API实战+Kafka Producer拦截器+Kafka Streams

kafka配置KAFKA_LISTENERS和KAFKA_ADVERTISED_LISTENERS

Kafka(四)集群之kafka

kafka NoClassDefFoundError kafka / Kafka