Apache Ignite 连接器 - 给出 NoClassDefFoundError [英] Apache Ignite Connector - Giving NoClassDefFoundError

查看:28
本文介绍了Apache Ignite 连接器 - 给出 NoClassDefFoundError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试借助 Apache Ignite Sink 连接器将 kafka 主题数据加载到 ignite 缓存中.面临以下问题.所有必需的 jars 以及 ignite 配置 (xml) 文件都已准备就绪.

I am trying to load kafka topic data into ignite caches with the help of Apache Ignite Sink connector. Facing following issue. All required jars are in place along with ignite configuration (xml) file.

我不确定为什么它会为 IgniteSinkTask$StreamerContext$Holder 抛出 ConnectException 和 NoClassDefFoundException.由于某种原因,java 无法运行这些类.

I am pretty unsure why it is throwing ConnectException and NoClassDefFoundException for IgniteSinkTask$StreamerContext$Holder. Due to some reason java is unable to run these classes.

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);
        }
    }
}

我该如何解决这个问题?提前致谢.

How can I resolve this? Thanks in advance.

[错误] 2021-08-27 06:13:58,827[任务线程-IgniteSinkConnectorConnector_0-0]org.apache.kafka.connect.runtime.WorkerSinkTask deliveryMessages -WorkerSinkTask{ id=IgniteSinkConnectorConnector_0-0} 任务抛出了一个未捕获和不可恢复的异常.任务正在被杀死并且将直到手动重新启动才能恢复.错误:无法初始化班级org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holderjava.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-2706: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)

[ERROR] 2021-08-27 06:13:58,827 [task-thread-IgniteSinkConnectorConnector_0-0] org.apache.kafka.connect.runtime.WorkerSinkTask deliverMessages - WorkerSinkTask{​id=IgniteSinkConnectorConnector_0-0}​ Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted. Error: Could not initialize class org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder java.lang.NoClassDefFoundError: Could not initialize class org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder at org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext.getStreamer(IgniteSinkTask.java:198) at org.apache.ignite.stream.kafka.connect.IgniteSinkTask.put(IgniteSinkTask.java:118) at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:586) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) [ERROR] 2021-08-27 06:13:58,828 [task-thread-IgniteSinkConnectorConnector_0-0] org.apache.kafka.connect.runtime.WorkerTask doRun - WorkerSinkTask{​id=IgniteSinkConnectorConnector_0-0}​ Task threw an uncaught and unrecoverable exception. Task is being killed and will not recover until manually restarted org.apache.kafka.connect.errors.ConnectException: Exiting WorkerSinkTask due to unrecoverable exception. at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:614) at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:329) at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:232) at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:201) at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:185) at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:234) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext$Holder at org.apache.ignite.stream.kafka.connect.IgniteSinkTask$StreamerContext.getStreamer(IgniteSinkTask.java:198) at org.apache.ignite.stream.kafka.connect.IgniteSinkTask.put(IgniteSinkTask.java:118) at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:586)

推荐答案

如果 Java 虚拟机或 ClassLoader 实例尝试在类的定义中加载(作为正常方法调用的一部分或作为一部分使用 new 表达式创建新实例)并且找不到类的定义.编译当前正在执行的类时,搜索到的类定义存在,但无法再找到该定义.简单来说,该类在编译时可用,但在运行时丢失.

A NoClassDefFoundError is thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found. The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found. In simple words, the class was available at compile time but missing during runtime.

参考以下进一步调试:

http://javareferencegv.blogspot.com/2013/10/debugging-javalangnoclassdeffounderror.html

这篇关于Apache Ignite 连接器 - 给出 NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆