本文介绍了Apache Flink:java.lang.NoClassDefFoundError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试遵循此

可能有什么问题?任何依赖项,版本?

注意:如果我注释有问题的行,程序运行没有问题.另请注意,此错误也出现在某些 Kafka (aws-kafka) 示例中;我在 amazonaws.kafka.samples.CustomMM2ReplicationPolicy 类中看到了同样的错误.

POM 文件

解决方案

你的错误在这里:

<groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_${scala.binary.version}</artifactId><version>${flink.version}</version><范围>提供</范围></依赖>

范围是提供的.这意味着,您的程序希望在运行时可以访问该库,但在任何地方都找不到它.

NoClassDefFoundError 表示在编译时可以访问,但在执行期间不能访问.


将范围更改为 compile 以解决问题:

<groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_${scala.binary.version}</artifactId><version>${flink.version}</version><scope>编译</scope></依赖>

另外,你可以看看此处了解更多技术信息.

I'm trying to follow this example but when I try to compile it, I have this error:

Error: Unable to initialize main class com.amazonaws.services.kinesisanalytics.aws
Caused by: java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction

The error is due this code:

    private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) {
        Properties inputProperties = new Properties();
        inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region);
        inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");

        return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
    }

And I suppose this is the problematic line:

  return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));

This are my maven dependencies:

What could be wrong? any dependencies, version?

Note: If I comment the problematic line, the program run without problem. Also to note, this error also appears on certain Kafka (aws-kafka) samples; I was shown the same error with the amazonaws.kafka.samples.CustomMM2ReplicationPolicy class.

POM file

<?
解决方案

Your error is here:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
    <version>${flink.version}</version>
    <scope>provided</scope>
</dependency>

The scope is provided. This means, that your program expects the library to be accessible during the runtime, but it can't find it anywhere.

NoClassDefFoundError means it was accessible during the compile-time, but not during the execution.


Change the scope to compile in order to resolve the issue:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
    <version>${flink.version}</version>
    <scope>compile</scope>
</dependency>

Also, you can take a look here for more technical info.

这篇关于Apache Flink:java.lang.NoClassDefFoundError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-29 16:58
查看更多