我正在尝试Apache Spark 2.2.1
使用Scala 2.11
. 我在我的 JAR 中包含了一些额外的依赖项,即Apache Commons CLI,并将它们全部打包到一个胖 JAR 中。但是,NoSuchMethodError
当我提交我的 Spark 应用程序时,我得到了一个。我很确定这不是由于 Scala 版本的不一致,而是由于依赖关系有些奇怪。
命令很简单spark-submit myjar.jar [arguments]
这是错误:
线程“主”java.lang.NoSuchMethodError 中的异常:org.apache.commons.cli.Options.addRequiredOption(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Lorg/apache/commons/cli /选项; 在 xyz.plenglin.aurum.spark.RunOnSpark$.main(RunOnSpark.scala:46) 在 xyz.plenglin.aurum.spark.RunOnSpark.main(RunOnSpark.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache .spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:775) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.
运行java -jar myjar.jar [arguments]
没有任何问题。窥视 JAR 内部,我知道org.apache.commons.cli.Options
它应该在哪里。