ERROR Detención debido a un error (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil
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
¡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