基于源码启动Kafka Connector遇类加载错误求助
Kafka Connector源码启动报错排查
错误分析
你遇到的ReflectionsException本质是Kafka Connect在扫描插件类时,尝试加载org.eclipse.swt.events.ControlListener类但找不到。SWT是桌面UI开发库,完全不属于Kafka Connector的核心依赖范畴,说明你的项目环境混入了无关的SWT依赖或JAR文件,干扰了类扫描流程。
解决步骤
- 移除无关依赖:检查项目构建文件(Maven的
pom.xml或Gradle的build.gradle),直接删除所有org.eclipse.swt开头的依赖项。 - 清理插件目录:如果配置了
plugin.path参数,检查该目录下是否存在包含SWT类的JAR,将这些无关JAR移出。 - 排除传递依赖:如果是其他依赖间接引入了SWT,在构建配置中排除这个传递依赖:
Maven配置示例:
Gradle配置示例:<dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>org.eclipse.swt</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>implementation('xxx:xxx:xxx') { exclude group: 'org.eclipse.swt' } - 临时容错方案(仅应急):如果暂时无法清理依赖,可添加JVM启动参数
-Dorg.reflections.skipClassNotFound=true跳过类找不到的错误,但这只是临时规避,建议优先清理依赖。
原始报错信息
[2023-09-12 17:04:22,050] INFO Scanning for plugin classes. This might take a moment ... (org.apache.kafka.connect.cli.ConnectStandalone) [2023-09-12 17:04:24,566] INFO Reflections took 2369 ms to scan 85 urls, producing 7787 keys and 30651 values [using 8 cores] (org.reflections.Reflections) [2023-09-12 17:04:24,584] WARN could not get type for name org.eclipse.swt.events.ControlListener from any class loader (org.reflections.Reflections) org.reflections.ReflectionsException: could not get type for name org.eclipse.swt.events.ControlListener at org.reflections.ReflectionUtils.forName(ReflectionUtils.java:312) at org.reflections.Reflections.expandSuperTypes(Reflections.java:382) at org.reflections.Reflections.<init>(Reflections.java:140) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader$InternalReflections.<init>(DelegatingClassLoader.java:490) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:363) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:298) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initPluginLoader(DelegatingClassLoader.java:248) at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:241) at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:60) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:78)
内容的提问来源于stack exchange,提问作者Red256
相关产品推荐
相关产品推荐

