关于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实例。一切都很好。
为什么我会得到这个错误?
发布于 2012-05-04 18:35:04
您必须先运行以下命令来构建Kafka:
> ./sbt update
> ./sbt package
只有到那时,Kafka才会准备好使用。
发布于 2013-09-22 08:57:28
你应该知道
./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。然后,启动脚本会将其添加到类路径中,这样您就应该拥有了所有需要的类。
发布于 2014-08-15 04:06:23
似乎没有SCALA_VERSION
环境变量,可执行文件不知道如何加载所需的库。尝试从Kafka安装目录执行以下操作:
SCALA_VERSION=2.9.3 bin/kafka-server-start.sh config/server.properties
参见http://kafka.apache.org/documentation.html#quickstart。
https://stackoverflow.com/questions/10445621
复制相似问题