运行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-ftphttpshttp://github.com/landoop/stream-reactor
任何人请建议解决这个错误。
1条答案
按热度按时间yizd12fk1#
此连接器有两个主要问题:
它将connect的api中的类与其依赖项捆绑在一起。e、 g.包中的类
org.apache.kafka.connect
. 不建议这样做,应将此类依赖项标记为已提供。连接器因类加载问题而失败的实际原因是它依赖于(至少根据它的
master
分支)在apache kafka的版本上,该版本可能与部署的连接工作程序的版本不匹配。具体来说,这取决于kafkaVersion = '0.10.2.0'
这不是最新的。kafka connect在其提供类加载隔离的最新版本中,将忽略它所认为的系统类,例如org.apache.kafka.connect
当它们被连接器的jar导入时。相反,它将从apachekafka附带的kafka connect jar加载此类类。正如您所观察到的那样,上述问题可能会导致类加载失败。
理想情况下,应该在连接器级别解决这些问题。
您可以申请的解决方法有:
从源代码构建连接器代码,在升级它所依赖的kafka版本并将其kafka依赖项标记为所提供的(包括kafka connect和kafka clients依赖项)。或者,
降级部署的kafka connect版本,使其与连接器当前依赖的版本完全匹配。
这里也记录了一个类似的问题:kafka mongodb sink connector没有启动