ERROR Detención debido a un error (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil

Sep 23 2020

Objetivo

Estoy tratando de conectarme a mi base de datos Oracle (12c) desde Kafka Connect (idealmente en modo distribuido) usando el conector Debezium (1.2.4.Final). La versión de Kafka que estoy usando es 2.13-2.6.0.

Comando utilizado

Según se menciona aquí , estoy ejecutando este comando:

C:\Users\username\Downloads\kafka>bin\windows\connect-distributed.bat config\connect-distributed.properties

Error

El error que recibo es:

ERROR Deteniendo debido a un error (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil en io.debezium.connector.oracle.Module. (Module.java:19) en io.debezium.connector.oracle.OracleConnector.version (OracleConnector.java:23) en org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:390) en org.apache.kafka.connect. runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:395) en org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc (DelegatingClassLoader.java:365) en org.apache.kafka.connect.runtime. DelegatingClassLoader.scanPluginPath (DelegatingClassLoader.java:337) en org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins (DelegatingClassLoader.java:268) en org.apachelationClassLoader.rf.reg.reg. DelegatingClassLoader.java:260) en org.apache.kafka.connect.runtime.isola ción.DelegatingClassLoader.initPluginLoader (DelegatingClassLoader.java:229) en org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders (DelegatingClassLoader.java:206) en org.apache.kafka.connect.runtime. (Plugins.java:61) en org.apache.kafka.connect.cli.ConnectDistributed.startConnect (ConnectDistributed.java:91) en org.apache.kafka.connect.cli.ConnectDistributed.main (ConnectDistributed.java:78) Causado por: java.lang.ClassNotFoundException: io.debezium.util.IoUtil en java.net.URLClassLoader.findClass (URLClassLoader.java:382) en java.lang.ClassLoader.loadClass (ClassLoader.java:418) en org.apache. kafka.connect.runtime.isolation.PluginClassLoader.loadClass (PluginClassLoader.java:104) en java.lang.ClassLoader.loadClass (ClassLoader.java:351) ... 13 más

Configuraciones

En mis connect-distributed.properties, tengo esto:

plugin.path=C:/Users/username/Downloads/kafka/libs/debezium

Y dentro de la carpeta de debezium (siguiendo la recomendación de Gunnar del comentario en esta pregunta ), tengo estos frascos:

También agregué la ruta del complemento en% PATH% de la siguiente manera:

echo %PATH% | findstr debezium

XXX; C: \ Usuarios \ nombre de usuario \ Descargas \ kafka \ libs \ debezium;

Ayuda

Cualquier ayuda sería muy apreciada, ya que espero reemplazar el sondeo de mi base de datos con este conector de debezium que parece un mejor enfoque. ¡Gracias!

Respuestas

1 jumping_monkey Sep 23 2020 at 10:45

¡La solución de Gunnar aquí funciona! (Su explicación también está ahí si quieres verla).

plugin.path=C:\\Users\\username\\Downloads\\kafka\\libs

y eso también funciona:

plugin.path=C:/Users/username/Downloads/kafka/libs
plugin.path=C:\Users\username\Downloads\kafka\libs
plugin.path=/Users/username/Downloads/kafka/libs

El error es: plugin.pathdebería ser hasta libs y no libs / debezium