【发布时间】:2021-10-27 03:06:27
【问题描述】:
我正在尝试借助 Apache Ignite Sink 连接器将 kafka 主题数据加载到 ignite 缓存中。面临以下问题。所有需要的 jars 连同 ignite 配置 (xml) 文件都已就位。
我很不确定为什么它会为 IgniteSinkTask$StreamerContext$Holder 抛出 ConnectException 和 NoClassDefFoundException。由于某些原因,java 无法运行这些类。
public static class StreamerContext {
private StreamerContext() {
}
public static Ignite getIgnite() {
return IgniteSinkTask.StreamerContext.Holder.IGNITE;
}
public static IgniteDataStreamer getStreamer() {
return IgniteSinkTask.StreamerContext.Holder.STREAMER;
}
private static class Holder {
private static final Ignite IGNITE;
private static final IgniteDataStreamer STREAMER;
private Holder() {
}
static {
IGNITE = Ignition.start(IgniteSinkTask.igniteConfigFile);
STREAMER = IGNITE.dataStreamer(IgniteSinkTask.cacheName);
}
}
}
我该如何解决这个问题? 提前致谢。
[错误] 2021-08-27 06:13:58,827 [任务线程-IgniteSinkConnectorConnector_0-0] org.apache.kafka.connect.runtime.WorkerSinkTask deliverMessages - WorkerSinkTask{id=IgniteSinkConnectorConnector_0-0} 任务抛出一个 未捕获且不可恢复的异常。任务正在被杀死并将 直到手动重新启动才能恢复。错误:无法初始化 班级 org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder java.lang.NoClassDefFoundError:无法初始化类 org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder 在 org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext.getStreamer(IgniteSinkTask.java:198) 在 org.apache.ignite.stream.kafka.connect.IgniteSinkTask.put(IgniteSinkTask.java:118) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:586) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201) 在 org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185) 在 org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 java.base/java.lang.Thread.run(Thread.java:834) [错误] 2021-08-27 06:13:58,828 [任务线程-IgniteSinkConnectorConnector_0-0] org.apache.kafka.connect.runtime.WorkerTask doRun - WorkerSinkTask{id=IgniteSinkConnectorConnector_0-0} 任务抛出一个 未捕获且不可恢复的异常。任务正在被杀死并将 直到手动重新启动才能恢复 org.apache.kafka.connect.errors.ConnectException:退出 WorkerSinkTask 由于不可恢复的异常。在 org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:614) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201) 在 org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185) 在 org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 java.base/java.lang.Thread.run(Thread.java:834) 引起: java.lang.NoClassDefFoundError:无法初始化类 org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder 在 org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext.getStreamer(IgniteSinkTask.java:198) 在 org.apache.ignite.stream.kafka.connect.IgniteSinkTask.put(IgniteSinkTask.java:118) 在 org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:586)
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
向我们展示错误中的类实际存在 - stackoverflow.com/a/1343026/2308683
-
您好,该类是 kafka-ignite.2.9.1.jar 的一部分,我已经编辑了问题。请查看和指导。此外,仅当我尝试在分布式模式下运行它时才会弹出错误,在独立模式下它不会显示任何此类问题。是因为类的静态性质吗?
标签: java apache-kafka apache-kafka-connect ignite noclassdeffounderror