ERROR Berhenti karena kesalahan (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil

Sep 23 2020

Objektif

Saya mencoba menyambung ke Oracle Database (12c) dari Kafka Connect (idealnya dalam mode terdistribusi) menggunakan konektor Debezium (1.2.4.Final). Versi Kafka yang saya gunakan adalah 2.13-2.6.0.

Perintah digunakan

Seperti yang disebutkan di sini , saya menjalankan perintah ini:

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

Kesalahan

Kesalahan yang saya dapatkan adalah:

ERROR Berhenti karena kesalahan (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil di io.debezium.connector.oracle.Module. (Module.java:19) di io.debezium.connector.oracle.OracleConnector.version (OracleConnector.java:23) di org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:390) di org.apache.kafka.connect. runtime.isolation.DelegatingClassLoader.versionFor (DelegatingClassLoader.java:395) di org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc (DelegatingClassLoader.java:365) di org.apache.kafka.connect DelegatingClassLoader.scanPluginPath (DelegatingClassLoader.java:337) di org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins (DelegatingClassLoader.java:268) di org.apache.klassLoader.java:268 DelegatingClassLoader.java:260) di org.apache.kafka.connect.runtime.isola tion.DelegatingClassLoader.initPluginLoader (DelegatingClassLoader.java:229) di org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders (DelegatingClassLoader.java:206) di org.apache.kafka.connect. (Plugins.java:61) di org.apache.kafka.connect.cli.ConnectDistributed.startConnect (ConnectDistributed.java:91) di org.apache.kafka.connect.cli.ConnectDistributed.main (ConnectDistributed.java:78) Disebabkan oleh: java.lang.ClassNotFoundException: io.debezium.util.IoUtil di java.net.URLClassLoader.findClass (URLClassLoader.java:382) di java.lang.ClassLoader.loadClass (ClassLoader.java:418) di org.apache. kafka.connect.runtime.isolation.PluginClassLoader.loadClass (PluginClassLoader.java:104) di java.lang.ClassLoader.loadClass (ClassLoader.java:351) ... 13 lainnya

Pengaturan

Di properti connect-distributed.properties saya, saya memiliki ini:

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

Dan di dalam folder debezium (mengikuti rekomendasi Gunnar dari komentar di pertanyaan ini ), saya memiliki toples ini:

Saya juga menambahkan jalur plugin di% PATH% sebagai berikut:

echo %PATH% | findstr debezium

XXX; C: \ Pengguna \ nama pengguna \ Unduhan \ kafka \ libs \ debezium;

Tolong

Setiap bantuan akan sangat dihargai, karena saya berharap untuk mengganti polling database saya dengan konektor debezium ini yang tampaknya merupakan pendekatan yang lebih baik. Terima kasih!

Jawaban

1 jumping_monkey Sep 23 2020 at 10:45

Solusi dari Gunnar di sini berhasil! (Penjelasannya juga ada di sana jika Anda ingin memeriksanya.)

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

dan itu juga berhasil:

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

Kesalahannya adalah: plugin.pathharus terserah libs dan bukan libs / debezium