错误由于错误而停止(org.apache.kafka.connect.cli.ConnectDistributed)java.lang.NoClassDefFoundError:io / debezium / util / IoUtil

时间:2020-09-23 03:33:06

标签: debezium

客观

我正在尝试使用Debezium连接器(1.2.4.Final)从Kafka Connect(理想情况下处于分布式模式)连接到我的Oracle Database(12c)。我正在使用的Kafka版本是2.13-2.6.0。

使用命令

根据提到的here,我正在运行以下命令:

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

错误

我得到的错误是:

ERROR由于错误而停止 (org.apache.kafka.connect.cli.ConnectDistributed) java.lang.NoClassDefFoundError:io / debezium / util / IoUtil 在io.debezium.connector.oracle.Module。(Module.java:19) 在io.debezium.connector.oracle.OracleConnector.version(OracleConnector.java:23) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:390) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:395) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc(DelegatingClassLoader.java:365) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:337) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:268)处 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:260) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initPluginLoader(DelegatingClassLoader.java:229) 在org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:206) 在org.apache.kafka.connect.runtime.isolation.Plugins(Plugins.java:61) 在org.apache.kafka.connect.cli.ConnectDistributed.startConnect(ConnectDistributed.java:91) 在org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:78) 引起原因:java.lang.ClassNotFoundException:io.debezium.util.IoUtil 在java.net.URLClassLoader.findClass(URLClassLoader.java:382) 在java.lang.ClassLoader.loadClass(ClassLoader.java:418) 在org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104) 在java.lang.ClassLoader.loadClass(ClassLoader.java:351) ...还有13个

设置

在我的connect-distributed.properties中,我有这个:

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

在debezium文件夹中(遵循this question中Gunnar的建议),我有这些罐子: enter image description here

我还在%PATH%中添加了插件路径,如下所示:

echo %PATH% | findstr debezium

XXX; C:\ Users \ username \ Downloads \ kafka \ libs \ debezium;

帮助

任何帮助将不胜感激,因为我希望用此debezium连接器替换数据库轮询,这似乎是一种更好的方法。谢谢!

1 个答案:

答案 0 :(得分:1)

Gunnar here的解决方案有效! (如果您想查看的话,他的解释也在那里。)

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

也可以:

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

错误是:plugin.path应该由libs决定,而不是libs / debezium