sum*_*ulb 12 noclassdeffounderror apache-kafka apache-zookeeper
我从Kafka下载页面下载了Apache Kafka.我把它提取到了/opt/apache/installed/kafka-0.7.0-incubating-src
.
该快速入门页面说,你需要通过运行来启动饲养员,然后开始卡夫卡:
>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.
Run Code Online (Sandbox Code Playgroud)
我使用telnet确保可以从Kafka运行的机器访问Zookeeper实例.一切都好.
为什么我会收到此错误?
sum*_*ulb 15
您必须首先通过运行以下命令来构建Kafka:
> ./sbt update
> ./sbt package
Run Code Online (Sandbox Code Playgroud)
只有这样,卡夫卡才能准备好使用.
你应该知道
./sbt update
./sbt package
Run Code Online (Sandbox Code Playgroud)
默认情况下会为Scala 2.8.0生成Kafka二进制文件.如果您需要其他版本,则需要执行此操作
./sbt "++2.9.2 update"
./sbt "++2.9.2 package"
Run Code Online (Sandbox Code Playgroud)
用所需的版本号替换2.9.2.这将生成适当的二进制文件.通常,当您切换版本时,您应该运行
./sbt clean
Run Code Online (Sandbox Code Playgroud)
从以前的版本清理二进制文件.
实际上,此外,您可能还需要执行此命令
./sbt "++2.9.2 assembly-package-dependency"
Run Code Online (Sandbox Code Playgroud)
此命令解析运行Kafka的所有依赖项,并创建一个仅包含这些的jar.然后,启动脚本会将其添加到类路径中,您应该拥有所有所需的类.
归档时间: |
|
查看次数: |
9251 次 |
最近记录: |