Kafka connect ftp



在运行 kafka-connect-ftp 的连接器时显示以下错误

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:54)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.newInstance(Class.java:412)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc(DelegatingClassLoader.java:279)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:260)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193)
at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153)
at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47)
at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:75)

我已经参考了两个社区网站,它们已经在融合连接器网站中给出 https://github.com/Eneco/kafka-connect-ftp https://github.com/Landoop/stream-reactor

任何人都可以为此错误提出解决方案。

此连接器有两个主要问题:

  1. 它捆绑了来自Connect的API的类及其依赖项。也就是说,它将类捆绑在包org.apache.kafka.connect.不建议这样做,此类依赖项应标记为提供。
  2. 连接器因类加载问题而失败的实际原因是它依赖于(至少根据其master分支)Apache Kafka 版本,该版本可能与部署的 Connect worker 的版本不匹配。具体来说,这取决于哪个不是最新的kafkaVersion = '0.10.2.0'。Kafka Connect 在其提供类加载隔离的最新版本中,将忽略它认为的系统类,例如当连接器的 jar 导入org.apache.kafka.connect中的类时。相反,它将从 Apache Kafka 附带的 Kafka Connect jar 中加载此类类。

上述问题可能会导致类加载失败,正如您观察到的那样。

理想情况下,应在连接器级别解决它们。

您可以应用的解决方法包括:

  • 从源代码构建连接器代码,在升级它所依赖的 Kafka 版本后。同时将其 Kafka 依赖项标记为提供(包括 Kafka Connect 和 Kafka 客户端依赖项)。或
  • 降级已部署的 Kafka Connect 版本,使其与连接器当前依赖的版本完全匹配。

此处记录了类似的问题: 卡夫卡蒙戈德布接收器连接器未启动

相关内容

  • 没有找到相关文章

最新更新