Flink中的java.lang.NoSuchMethodError

我试图使用以下方法读取文件:

final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); DataSet line = env.readTextFile("file:///pathtofile/myfile.txt"); 

我收到以下错误:

 java.lang.NoSuchMethodError: org.apache.flink.api.common.io.DelimitedInputFormat: method (Lorg/apache/flink/core/fs/Path;)V not found 

我使用的是flink 1.3.2版,java版“1.8.0_91”

与依赖项存在冲突。 Apache Flink默认将许多类加载到其类路径中。

请阅读这篇文章https://ci.apache.org/projects/flink/flink-docs-release-1.3/monitoring/debugging_classloading.html最后一节

使用maven-shade-plugin解决与Flink的依赖冲突

Apache Flink默认将许多类加载到其类路径中。 如果用户经常使用Flink正在使用的库的不同版本

 IllegalAccessExceptions 

要么

 NoSuchMethodError 

是结果。

所以,我建议你使用你的pom.xml并使用maven-shade-plugin并添加正确的重定位,就像我们在例子中一样

  org.codehaus.plexus.util org.shaded.plexus.util  org.codehaus.plexus.util.xml.Xpp3Dom org.codehaus.plexus.util.xml.pull.*   

您是否在IntelliJ或Dashboard中收到此错误,如果您在IntelliJ中收到此错误,请确保在pom.xml中使用相同的Flink版本,并在构建中添加依赖关系着色,如下所示

     org.apache.maven.plugins maven-compiler-plugin 3.1  1.8 1.8 jdt    org.eclipse.tycho tycho-compiler-jdt 0.21.0     org.apache.maven.plugins maven-shade-plugin 3.1.0   package  shade     org.codehaus.plexus.util org.shaded.plexus.util  org.codehaus.plexus.util.xml.Xpp3Dom org.codehaus.plexus.util.xml.pull.*         > 

确保在进行更改后在终端中运行maven clean install。 另一方面,如果您只在仪表板中而不是在IntelliJ中遇到此问题,请查看此处

您需要检查构建路径,确保libs存在并正确导入它们

错误“java.lang.NoSuchMethodError”的一个可能原因是我们使用不同版本的flink然后我们在我们的系统上安装了什么。 对我来说,我有Flink 1.3.2,而我使用的版本是1.1.1。 所以我更新了我的pom文件以获得相同的版本。

对于那些正在使用Flink 1.3.2进行上述问题的人来说,这是我能够成功构建的整个pom:

    org.apache.maven.plugins maven-assembly-plugin 2.4.1    jar-with-dependencies     FlinktoLambda      make-assembly  package  single      org.apache.maven.plugins maven-jar-plugin    FlinktoLambda       org.apache.maven.plugins maven-compiler-plugin 3.1  1.8 1.8 jdt    org.eclipse.tycho tycho-compiler-jdt 0.21.0     org.apache.maven.plugins maven-shade-plugin 3.1.0   package  shade     FlinktoLambda   reference.conf     org.codehaus.plexus.util org.shaded.plexus.util  org.codehaus.plexus.util.xml.Xpp3Dom org.codehaus.plexus.util.xml.pull.*          my-app http://maven.apache.org    FlinktoLambda my-app   com.typesafe.akka akka-remote_2.10   com.typesafe.akka akka-actor_2.10   com.typesafe.akka akka-slf4j_2.10        org.apache.flink flink-table_2.10 1.3.2   org.apache.flink flink-java 1.3.2   org.apache.flink flink-streaming-java_2.10 1.3.2   org.apache.flink flink-clients_2.10 1.3.2   org.apache.flink flink-scala_2.10 1.3.2   org.apache.flink flink-streaming-scala_2.10 1.3.2   

请在shade插件中相应更改您的主类。