Flink 1.12.1 NoClassDefFoundError SourceFunction

Posted 风真天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 1.12.1 NoClassDefFoundError SourceFunction相关的知识,希望对你有一定的参考价值。

Flink 1.12.1 java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction

错误信息描述

使用Idea运行项目,抛出以下异常

java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
	at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
	at java.lang.Class.getMethod0(Class.java:3018)
	at java.lang.Class.getMethod(Class.java:1784)
	at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.flink.streaming.api.functions.source.SourceFunction
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	... 7 more
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" 

解决方案一

修改pom文件,把里面与flink有关的scope为provided的代码行注释,类似以下效果

<!-- This dependency is provided, because it should not be packaged into the JAR file. -->
<dependency>
	<groupId>org.apache.flink</groupId>
	<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
	<version>${flink.version}</version>
	<!-- <scope>provided</scope> -->
</dependency>
<dependency>
	<groupId>org.apache.flink</groupId>
	<artifactId>flink-clients_${scala.binary.version}</artifactId>
	<version>${flink.version}</version>
	<!-- <scope>provided</scope> -->
</dependency>

刷新Maven依赖,重新运行项目

maven reimport

解决方案二

我使用的是Idea 2020.3,通过调整idea配置,支持在项目运行时,将Provided的依赖有效

进入Edit Configurations

选择Modify options,选择Use classpath of module

选择Inclue dependencies with "Provided" scope

以上是关于Flink 1.12.1 NoClassDefFoundError SourceFunction的主要内容,如果未能解决你的问题,请参考以下文章

Flink SQL Hbase Demo

Flink 的批处理执行模式如何实现 BOUNDED source?

Flink SQL Client 启动失败 Java版本问题

Flink事件时间和水印详解

NoClassDefFoundError:错误的名称

调试休眠配置的工具