FEHLER Beenden aufgrund eines Fehlers (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil

Sep 23 2020

Zielsetzung

Ich versuche, über den Debezium-Connector (1.2.4.Final) von Kafka Connect (idealerweise im verteilten Modus) eine Verbindung zu meiner Oracle-Datenbank (12c) herzustellen. Die Kafka-Version, die ich verwende, ist 2.13-2.6.0.

Befehl verwendet

Wie hier erwähnt , führe ich diesen Befehl aus:

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

Error

Der Fehler, den ich bekomme, ist:

FEHLER Beenden aufgrund eines Fehlers (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil bei io.debezium.connector.oracle.Module. (Module.java:19) um io.debezium.connector.oracle.OracleConnector.version (OracleConnector.java:23) unter org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:390) unter org.apache.kafka.connect. runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:395) unter org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc (DelegatingClassLoader.java:365) unter org.apache.kaf. DelegatingClassLoader.scanPluginPath (DelegatingClassLoader.java:337) unter org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins (DelegatingClassLoader.java:268) unter org.apect.l. DelegatingClassLoader.java:260) unter org.apache.kafka.connect.runtime.isola tion.DelegatingClassLoader.initPluginLoader (DelegatingClassLoader.java:229) unter org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders (DelegatingClassLoader.java:206) unter org.apache.kafl. (Plugins.java:61) unter org.apache.kafka.connect.cli.ConnectDistributed.startConnect (ConnectDistributed.java:91) unter org.apache.kafka.connect.cli.ConnectDistributed.main (ConnectDistributed.java:78) Verursacht von: java.lang.ClassNotFoundException: io.debezium.util.IoUtil bei java.net.URLClassLoader.findClass (URLClassLoader.java:382) bei java.lang.ClassLoader.loadClass (ClassLoader.java:418) bei org.apache. kafka.connect.runtime.isolation.PluginClassLoader.loadClass (PluginClassLoader.java:104) unter java.lang.ClassLoader.loadClass (ClassLoader.java:351) ... 13 weitere

die Einstellungen

In meinen connect-distributed.properties habe ich Folgendes:

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

Und im Debezium-Ordner (gemäß Gunnars Empfehlung aus dem Kommentar in dieser Frage ) habe ich diese Gläser:

Ich habe auch den Plugin-Pfad in% PATH% wie folgt hinzugefügt:

echo %PATH% | findstr debezium

XXX; C: \ Benutzer \ Benutzername \ Downloads \ kafka \ libs \ debezium;

Hilfe

Jede Hilfe wäre sehr dankbar, da ich hoffe, meine Datenbankabfrage durch diesen Debezium-Konnektor zu ersetzen, der ein besserer Ansatz zu sein scheint. Vielen Dank!

Antworten

1 jumping_monkey Sep 23 2020 at 10:45

Die Lösung von Gunnar funktioniert hier ! (Seine Erklärung ist auch da, wenn Sie es überprüfen möchten.)

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

und das funktioniert auch:

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

Der Fehler ist: plugin.pathsollte bis zu libs und nicht libs / debezium sein