ERROR Berhenti karena kesalahan (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError: io / debezium / util / IoUtil
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
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