2012-05-04 20 views
9

Về Apache-Kafka messaging queue.kafka NoClassDefFoundError kafka/Kafka

Tôi đã tải xuống Apache Kafka từ trang tải xuống Kafka. Tôi đã giải nén nó vào /opt/apache/installed/kafka-0.7.0-incubating-src.

Các quickstart page nói rằng bạn cần phải bắt đầu Zookeeper và sau đó bắt đầu Kafka bằng cách chạy:
>bin/kafka-server-start.sh config/server.properties

Tôi đang sử dụng một máy chủ Zookeeper riêng biệt, vì vậy tôi sửa config/server.properties để trỏ đến đó dụ Zookeeper.

Khi tôi chạy Kafka, theo hướng dẫn trong trang quickstart, tôi nhận được lỗi sau:

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. 

tôi đã sử dụng telnet để đảm bảo dụ Zookeeper có thể truy cập từ máy tính mà Kafka chạy trên. Mọi thứ ổn cả.

Tại sao tôi gặp phải lỗi này?

Trả lời

11

Trước tiên, bạn phải xây dựng Kafka bằng cách chạy các lệnh sau:

> ./sbt update 
> ./sbt package 

Chỉ khi đó Kafka sẽ sẵn sàng để sử dụng.

0

Chỉ cần để thêm vào các câu trả lời trước, nếu bạn đang chạy IntelliJ, và muốn chạy Kafka bên IntelliJ và/hoặc bước qua nó, hãy chắc chắn để chạy

> ./sbt idea 

tôi đã dành một cách dễ dàng một nửa ngày cố gắng tạo dự án IntelliJ từ đầu, và nó chỉ ra rằng lệnh đơn là tất cả những gì tôi cần để làm cho nó hoạt động. Ngoài ra, hãy đảm bảo bạn đã cài đặt plugin Scala cho IntelliJ.

5

Bạn nên biết rằng

./sbt update 
./sbt package 

sẽ tạo ra mã nhị phân Kafka cho Scala 2.8.0 theo mặc định. Nếu bạn cần nó cho một phiên bản khác, bạn cần phải làm

./sbt "++2.9.2 update" 
./sbt "++2.9.2 package" 

thay thế 2.9.2 bằng số phiên bản mong muốn. Điều này sẽ làm cho các tệp nhị phân thích hợp. Nói chung, khi bạn chuyển đổi phiên bản, bạn nên chạy

./sbt clean 

để xóa các tệp nhị phân khỏi các phiên bản trước.

Trên thực tế, ngoài ra, bạn có thể cũng cần phải thực hiện lệnh này

./sbt "++2.9.2 assembly-package-dependency" 

Lệnh này giải quyết tất cả các phụ thuộc để chạy Kafka, và tạo ra một lọ mà chỉ những chứa. Sau đó, các kịch bản bắt đầu sẽ thêm điều này vào đường dẫn lớp và bạn sẽ có tất cả các lớp mong muốn của bạn.

2

Dường như không có biến môi trường SCALA_VERSION, tệp thực thi không biết cách tải các thư viện cần thiết.Hãy thử như sau từ thư mục cài đặt của Kafka:

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

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

0

Bạn cũng có thể sử dụng tải xuống nhị phân do Apache cung cấp.

Ví dụ: tải xuống phiên bản kafka - 0.9.0.1 từ link này.

Để tải xuống phiên bản khác từ link2 và tải xuống phiên bản nhị phân thay thế. Đây là những phiên bản đã được xây dựng. Không cần phải xây dựng lại bằng Scala.

Sử dụng đang sử dụng tải xuống nguồn thay thế.

0

Bạn đã tải xuống phiên bản nguồn. Tải xuống gói nhị phân của Kafka và tiến hành thử nghiệm của bạn.

+0

Câu hỏi này được hỏi 4 năm trước. Vào thời điểm đó, tùy chọn mã nguồn là tùy chọn duy nhất. – summerbulb

0

Bạn có thể tìm thấy sau hai lựa chọn trên trang tải Kafka

https://kafka.apache.org/downloads.html

Nguồn download:
tải Binary

Bạn đã tải "Kafka-0.7.0-ấp-src" nó' mã nguồn

Tải xuống gói nhị phân của Kafka Scala 2.10 - kafka_2.10-0.10.1.1.tgz (asc, md5)