问题描述
我正在尝试遵循此
可能有什么问题?任何依赖项,版本?
注意:如果我注释有问题的行,程序运行没有问题.另请注意,此错误也出现在某些 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!