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
插件中相应更改您的主类。