ERRORE Arresto a causa di un errore (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil

Sep 23 2020

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

1 jumping_monkey Sep 23 2020 at 10:45

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