2012-05-04 20 views
9

En cuanto a Apache-Kafka messaging queue.kafka NoClassDefFoundError kafka/Kafka

He descargado Apache Kafka desde la página de descarga de Kafka. Lo he extraído a /opt/apache/installed/kafka-0.7.0-incubating-src.

El quickstart page dice que necesita para empezar empleado del zoológico y luego empezar a Kafka ejecutando:
>bin/kafka-server-start.sh config/server.properties

estoy usando un servidor Zookeeper por separado, por lo que he editado config/server.properties para apuntar a esa instancia Zookeeper.

Cuando corro Kafka, como se indica en la página de inicio rápido, me sale el siguiente error:

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. 

que utiliza telnet para asegurarse de que la instancia Zookeeper es accesible desde la máquina que se ejecuta en Kafka. Todo está bien.

¿Por qué me sale este error?

Respuesta

11

primero debe construir Kafka ejecutando los siguientes comandos:

> ./sbt update 
> ./sbt package 

Sólo entonces estará listo para su uso Kafka.

0

sólo para añadir a la respuesta anterior, si se está ejecutando IntelliJ, y quieren correr Kafka dentro IntelliJ y/o paso a través de él, asegúrese de ejecutar

> ./sbt idea 

pasé fácilmente medio día tratando de crear el proyecto IntelliJ desde cero, y resulta que solo un comando era todo lo que necesitaba para hacerlo funcionar. Además, asegúrese de tener instalado el complemento Scala para IntelliJ.

5

Usted debe saber que

./sbt update 
./sbt package 

producirá binarios Kafka para Scala 2.8.0 por defecto. Si lo necesita para una versión diferente, necesita hacer

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

reemplazando 2.9.2 con el número de versión deseado. Esto hará los binarios apropiados. En general, cuando cambia versiones, debe ejecutar

./sbt clean 

para limpiar los binarios de versiones anteriores.

En realidad, además, es posible que también tenga que realizar este comando

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

Este comando resuelve todas las dependencias para el funcionamiento de Kafka, y crea un frasco que contiene sólo estos. Luego, los scripts de inicio agregarían esto a la ruta de clase y debería tener todas las clases deseadas.

2

Parece que sin la variable de entorno SCALA_VERSION, el ejecutable no sabe cómo cargar las bibliotecas necesarias.Pruebe lo siguiente desde el directorio de instalación de Kafka:

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

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

0

También puede usar las descargas binarias proporcionadas por Apache.

Por ejemplo, descargue la versión kafka - 0.9.0.1 de este link.

Para otras versiones, descargue desde link2 y descargue las versiones binarias. Estas ya están construidas. No es necesario construir de nuevo con Scala.

Utilice en su lugar la descarga de la fuente.

0

Ha descargado la versión de origen. Descargue el paquete binario de Kafka y continúe con sus pruebas.

+0

Esta pregunta fue hecha hace 4 años. En ese momento, la opción del código fuente era la única opción. – summerbulb

0

puede encontrar dos opciones siguientes en la página descargas Kafka

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

fuente descarga:
descargas binarios

Ha descargado "kafka-0.7.0-incubación-src" es código fuente

Descargar el paquete binario de Kafka Scala 2.10 - kafka_2.10-0.10.1.1.tgz (asc, md5)

Cuestiones relacionadas