由于本机库问题导致 java.lang.NoClassDefFoundError?

问题描述 投票:0回答:1

我正在尝试在我的 Flink java 作业中使用时区查找服务(https://github.com/dustin-johnson/timezonemap)。 它在本地计算机中运行良好,最初在 Flink 服务器中运行良好,但在重新启动作业 2-3 次后,它开始给出 NoClassDefFoundError 错误 -

java.lang.NoClassDefFoundError: Could not initialize class com.github.luben.zstd.ZstdInputStream
    at org.apache.commons.compress.compressors.zstandard.ZstdCompressorInputStream.<init>(ZstdCompressorInputStream.java:43)
    at us.dustinj.timezonemap.data.DataLocator.getDataInputStream(DataLocator.java:22)
    at us.dustinj.timezonemap.TimeZoneMap.forRegion(TimeZoneMap.java:92)
    at us.dustinj.timezonemap.TimeZoneMap.forEverywhere(TimeZoneMap.java:60)
    at dtap.service.TimezoneService.<init>(TimezoneService.java:17)
    at functions.processors.KernelIntgrationProcessor.processElement(KernelIntgrationProcessor.java:47)
    at functions.processors.KernelIntgrationProcessor.processElement(KernelIntgrationProcessor.java:23)
    at org.apache.flink.streaming.api.operators.ProcessOperator.processElement(ProcessOperator.java:66)
    at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:202)
    at org.apache.flink.streaming.runtime.tasks.OneInputStreamTask.run(OneInputStreamTask.java:105)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:300)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:704)
    at java.lang.Thread.run(Thread.java:748)

当我查看 ZstdCompressorInputStream 类的代码时,它正在加载本机库。 我从下面的页面发现本机库卸载问题可能是造成这种情况的原因。

https://www.ibm.com/support/knowledgecenter/SS7K4U_8.5.5/com.ibm.websphere.zseries.doc/ae/rtrb_classload_viewer.html

有人遇到过类似的问题或有解决这个问题的想法吗?

谢谢 马亨德拉

java classloader flink-streaming
1个回答
0
投票
        <dependency>
            <groupId>com.github.luben</groupId>
            <artifactId>zstd-jni</artifactId>
            <version>1.5.6-3</version>
        </dependency>

添加此依赖项解决了我的问题。

我的仓库:https://github.com/k-raina/kafka-test

© www.soinside.com 2019 - 2024. All rights reserved.