【问题标题】:ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectStandalone) java.lang.NoClassDefFoundError: io/debezium/util/IoUtil错误由于错误而停止(org.apache.kafka.connect.cli.ConnectStandalone)java.lang.NoClassDefFoundError:io/debezium/util/IoUtil
【发布时间】:2019-07-14 10:13:42
【问题描述】:

我正在尝试将我的 SQL Server 数据库连接到 Windows 上的 kafka,我下载了 Debezium jar 文件,它们位于名为 debezium-connector-sqlserver 的文件夹中,如下所示:Kafka folderDebezium folder

我还在 connect-standalone.properties 中添加了这一行plugin.path=C:\\current_kafka_2.12-2.0.0\\debezium-connector-sqlserver,这是我放置从 Debezium 下载的所有 jar 文件的地方。

我还创建了一个名为 connect-mssql.properties 的文件,并将其放入其中。

name=inventory-connector
connector.class=io.debezium.connector.sqlserver.SqlServerConnector
tasks.max=2
database.hostname=DESKTOP-LMJGRO0
database.port=1433
database.user=sa
database.password=password
database.dbname=Source
database.history.kafka.bootstrap.servers=localhost:9092
database.history.kafka.topic=test
table.whitelist=dbo.guinea_pig_source

现在当我尝试运行这个 .\bin\windows\connect-standalone .\config\connect-standalone.properties .\config\connect-mssql.properties

我收到以下错误:

[2019-02-20 17:18:39,794] ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectStandalone)
java.lang.NoClassDefFoundError: io/debezium/util/IoUtil
        at io.debezium.connector.sqlserver.Module.<clinit>(Module.java:19)
        at io.debezium.connector.sqlserver.SqlServerConnector.version(SqlServerConnector.java:29)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:346)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.versionFor(DelegatingClassLoader.java:351)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc(DelegatingClassLoader.java:328)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:309)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:240)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:232)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initPluginLoader(DelegatingClassLoader.java:201)
        at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:178)
        at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:61)
        at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:77)
Caused by: java.lang.ClassNotFoundException: io.debezium.util.IoUtil
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:104)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 12 more

【问题讨论】:

  • 嗨,你在哪里解压了 Debezium 插件?
  • 它在一个名为“debezium-connector-sqlserver”的文件夹中,我把整个东西放在了 kafka 文件夹中。
  • 尝试将 debezium 插件解压到 kafka-connect 文件夹中的 /plugins 文件夹
  • 注意:Kafka + Kafka Connect 未在 Windows 环境中进行全面测试。 plugin.path 可能不起作用
  • 你能分享一下 debezium-connector-sqlserver 文件夹的内容吗?具体来说,它必须包含 debezium-connector-sqlserver-.jardebezium-core-.jar 以及 SQL Server 驱动程序 JAR。另请注意,Debezium 0.9.0 和 0.9.1 的该连接器的存档实际上包含 太多 依赖项(还有测试依赖项等)。这将在下周到期的 0.9.2 中修复.

标签: windows apache-kafka apache-kafka-connect debezium


【解决方案1】:

所有插件文件必须在“plugin.path=”的子目录中。例如,如果插件路径是:

plugin.path=F:/connect-plugins/

使用以下文件创建目录 F:/connect-plugins/mssql-debezium:

  • debezium-connector-sqlserver-0.9.2.Final.jar
  • debezium-core-0.9.2.Final.jar
  • mssql-jdbc-6.4.0.jre8.jar

【讨论】:

    【解决方案2】:

    将连接器 jar 文件和 kafka 库文件添加到类路径:

    在 Linux 中: 导出 CLASSPATH=$CLASSPATH:/debezium-connector-sqlserver/*

    导出 CLASSPATH=$CLASSPATH://kafka/libs/*

    【讨论】:

      【解决方案3】:

      尝试将您的 "debezium-connector-sqlserver" 嵌套在另一个文件夹中,例如:"plugins" 并将您的 connect-standalone.properties 更新为 plugin.path=C:\current_kafka_2.12-2.0.0\plugins

      因此您的目录结构将如下所示, C:\current_kafka_2.12-2.0.0\plugins\debezium-connector-sqlserver 并且您的 jar 将位于 "debezium-connector-sqlserver"

      【讨论】:

        【解决方案4】:

        在插件路径变量的末尾添加斜杠解决了我的问题。

        plugin.path=**C:/Application/kafka/plugins/**
        

        【讨论】:

          猜你喜欢
          • 2021-01-09
          • 2020-12-07
          • 1970-01-01
          • 2020-12-03
          • 2020-06-01
          • 2020-01-05
          • 2023-01-05
          • 1970-01-01
          • 2020-02-03
          相关资源
          最近更新 更多