ERRORE Arresto a causa di un errore (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil
Obbiettivo
Sto cercando di connettermi al mio database Oracle (12c) da Kafka Connect (idealmente in modalità distribuita) utilizzando il connettore Debezium (1.2.4.Final). La versione di Kafka che sto usando è 2.13-2.6.0.
Comando utilizzato
Come accennato qui , sto eseguendo questo comando:
C:\Users\username\Downloads\kafka>bin\windows\connect-distributed.bat config\connect-distributed.properties
Errore
L'errore che ricevo è:
ERRORE Arresto a causa di un errore (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil su io.debezium.connector.oracle.Module. (Module.java:19) su io.debezium.connector.oracle.OracleConnector.version (OracleConnector.java:23) su org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:390) su org.apache.kafka.connect. runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:395) su org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc (DelegatingClassLoader.java:395) su org.apache.kafka.connectisolation. DelegatingClassLoader.scanPluginPath (DelegatingClassLoader.java:337) su org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins (DelegatingClassLoader.java:268) su org.apolegache.DelegatingClassLoader.scanUrlsAndAddPlugins (DelegatingClassLoader.java:268) su org.apolegache. DelegatingClassLoader.java:260) su org.apache.kafka.connect.runtime.isola tion.DelegatingClassLoader.initPluginLoader (DelegatingClassLoader.java:229) su org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders (DelegatingClassLoader.java:206) su org.apache.kafka.connectis. (Plugins.java:61) su org.apache.kafka.connect.cli.ConnectDistributed.startConnect (ConnectDistributed.java:91) su org.apache.kafka.connect.cli.ConnectDistributed.main (ConnectDistributed.java:78) Caused di: java.lang.ClassNotFoundException: io.debezium.util.IoUtil su java.net.URLClassLoader.findClass (URLClassLoader.java:382) su java.lang.ClassLoader.loadClass (ClassLoader.java:418) su org.apache. kafka.connect.runtime.isolation.PluginClassLoader.loadClass (PluginClassLoader.java:104) su java.lang.ClassLoader.loadClass (ClassLoader.java:351) ... 13 altro
impostazioni
Nel mio connect-distributed.properties, ho questo:
plugin.path=C:/Users/username/Downloads/kafka/libs/debezium
E all'interno della cartella debezium (seguendo la raccomandazione di Gunnar dal commento in questa domanda ), ho questi barattoli:
Ho anche aggiunto il percorso del plugin in% PATH% come segue:
echo %PATH% | findstr debezium
XXX; C: \ Users \ nomeutente \ Downloads \ kafka \ libs \ debezium;
Aiuto
Qualsiasi aiuto sarebbe molto apprezzato, poiché spero di sostituire il polling del mio database con questo connettore debezium che sembra un approccio migliore. Grazie!
Risposte
La soluzione di Gunnar qui funziona! (Anche la sua spiegazione è lì se vuoi dare un'occhiata.)
plugin.path=C:\\Users\\username\\Downloads\\kafka\\libs
e funziona anche:
plugin.path=C:/Users/username/Downloads/kafka/libs
plugin.path=C:\Users\username\Downloads\kafka\libs
plugin.path=/Users/username/Downloads/kafka/libs
L'errore è: plugin.pathdovrebbe dipendere da libs e non da libs / debezium