线程“主”java.lang.NoSuchMethodError 中的异常:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collectio

Posted

技术标签:

【中文标题】线程“主”java.lang.NoSuchMethodError 中的异常:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps【英文标题】:Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps 【发布时间】:2019-09-24 05:23:17 【问题描述】:

当我在终端运行时:

sudo spark-submit --master local --class xxx.xxxx.xxx.xxxx.xxxxxxxxxxxxJob --conf 'spark.driver.extraJavaOptions=-Dconfig.resource=xxx.conf' /home/xxxxx/workspace/prueba/pruebas/目标/scala-2.11/MiPrueba.jar

我收到以下错误:

线程“main”中的异常 java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps; 在 pureconfig.DurationUtils$.words(DurationUtils.scala:36) 在 pureconfig.DurationUtils$.pureconfig$DurationUtils$$expandLabels(DurationUtils.scala:38) 在 pureconfig.DurationUtils$$anonfun$2.apply(DurationUtils.scala:53) 在 pureconfig.DurationUtils$$anonfun$2.apply(DurationUtils.scala:53) 在 scala.collection.immutable.List.flatMap(List.scala:338) 在 pureconfig.DurationUtils$.(DurationUtils.scala:53) 在 pureconfig.DurationUtils$.(DurationUtils.scala) 在 pureconfig.DurationReaders$class.$init$(BasicReaders.scala:114) 在 pureconfig.ConfigReader$.(ConfigReader.scala:121) 在 pureconfig.ConfigReader$.(ConfigReader.scala) 在 xxx.xxxx.xxx.xxxx.config.package$Config$.load(package.scala:67) 在 xxx.xxxx.xxx.xxxx.job.xxxxJob$class.main(XXXxxx.scala:23) 在 xxx.xxxx.xxx.xxxx......Job$.main(Xxxxxxxxxxxx.scala:19) 在 xxx.xxxx.xxx.xxxx..main(XXXXXXxxxxxxxxx.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52) 在 org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849) 在 org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167) 在 org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195) 在 org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86) 在 org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

构建定义:

版本 := "0.1"

scalaVersion := "2.11.11"

库依赖项:

val dependFullList = spark ++ hadoop ++ apisDownload ++ configuration 

配置:

  val configuration = Seq(
    "com.github.pureconfig" %% "pureconfig" % "0.9.2",
    "com.typesafe" % "config" % "1.3.1",
    "org.lz4" % "lz4-java" % "1.4.1"
  )

火花:

  val spark = Seq(
    "org.apache.spark" %% "spark-core" % Versions.spark % "provided" exclude("javax.jms", "jms"),
    "org.apache.spark" %% "spark-sql" % Versions.spark % "provided",
    "com.databricks" %% "spark-xml" % "0.4.1"
    // https://mvnrepository.com/artifact/mrpowers/spark-daria
  )

有什么想法吗?

【问题讨论】:

你能运行spark-submit --version吗? spark-submit --version --> 2.4.2 【参考方案1】:

您正在混合 scala 版本。 Spark 2.4.2 不支持 scala 2.11。切换到 Spark 2.4.0 或将您的库替换为 scala 2.12 版本。

https://spark.apache.org/releases/spark-release-2-4-2.html

请注意,Scala 2.11 支持从 2.4.1 开始已被弃用。从 2.4.2 开始,为 Scala 2.12 编译了预构建的便利二进制文件。 Spark 仍然在 Maven Central 中交叉发布 2.11 和 2.12,并且可以从源代码为 2.11 构建。

【讨论】:

以上是关于线程“主”java.lang.NoSuchMethodError 中的异常:scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collectio的主要内容,如果未能解决你的问题,请参考以下文章

主线程啥都没做,就会等待子线程结束。这是为啥?

Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

子线程怎么不阻塞主线程

QT中UI主窗口如何与子线程相互传递参数

java 子线程 回调 主线程

C++怎么在主线程中使用子线程的数据? 比如说主线程中有一个数组,如何在子线程中调用这个数组