无法执行目标net.alchim31.maven:scala-maven-plugin:3.3.3:compile/org.apache.maven.plugin.MojoFailureException

问题描述 投票:0回答:1

我们的产品运行时环境现在使用 Apache Spark 3.4

我的开发环境

  • Intellij
  • 已安装 Maven 3.9.9
  • Java 23.0.1
  • POM Spark 版本 3.4.0
  • POM Scala 版本 2.12.15
  • POM scala-maven-插件 4.9.2
  • POM maven-compiler-plugin 3.13.0
    • 目标1.8
    • 来源1.8

Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven 主目录:C:\MAVEN pache-maven-3.9.9 Java 版本:23.0.1,供应商:Oracle Corporation,运行时:C:\Program Files\Java\jdk-23 默认区域设置:en_US,平台编码:UTF-8 操作系统名称:“windows 11”,版本:“10.0”,架构:“amd64”,系列:“windows”

因为我们的产品环境是 3.4,所以我觉得我需要在本地指定相同的版本。

这一切都是从我开始在运行时收到 ArraryOps$ 类的 ClassNotFound 错误开始的。得知此错误是由于 Spark 版本控制造成的,我更新了我的 pom 版本。

现在它在编译时失败,几乎立即退出。 当我点击编译时,它几乎立即退出

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.842 s
[INFO] Finished at: 2024-10-30T15:50:55-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:4.9.2:compile (default) on project WUfBDSReporting: scala compilation failed -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal net.alchim31.maven:scala-maven-plugin:4.9.2:compile (default) on project WUfBDSReporting: scala compilation failed
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)

顶级错误:无法执行目标net.alchim31.maven:scala-maven-plugin:4.9.2:compile

在日志记录中提到:由:org.apache.maven.plugin.MojoFailureException:scala编译失败

看帖子,

无法执行目标net.alchim31.maven:scala-maven-plugin:3.2.0:编译(scala-compile)https://github.com/davidB/scala-maven-plugin/issues/224 他们将 scala-maven-plugin 更新到了 3.3.3。 我尝试过 3.3.3、4.9.2 以及其他各种版本。

选择的 Scala 版本基于

https://community.cloudera.com/t5/Community-Articles/Spark-Scala-Version-Compatibility-Matrix/ta-p/383713

但是我仍然收到同样的问题。

同一错误的更多部分

[INFO]
[INFO]   last tree to typer: EmptyTree
[INFO]        tree position: unknown
[INFO]             tree tpe: notype
[INFO]               symbol: null
[INFO]            call site: <none> in <none
[INFO]
[INFO] == Source file context for tree position ==
[INFO]
[INFO]
[INFO]  at scala.reflect.internal.Reporting.abort(Reporting.scala:69)
[INFO]  at scala.reflect.internal.Reporting.abort$(Reporting.scala:65)
[INFO]  at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:28)
[ERROR]         at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadIndex(ClassfileParser.scala:407)
[ERROR]         at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.getExternalName(ClassfileParser.scala:262)

对此了解甚少,我有点迷失

scala maven apache-spark
1个回答
0
投票

来自 概述 - Apache Spark 3.4

Spark 在 Java 8/11/17Scala 2.12/2.13、Python 3.7+ 和 R 3.5+ 上运行。从 Spark 3.4.0 开始,Python 3.7 支持已弃用。 自 Spark 3.4.0 起,已弃用 8u362 版本之前的 Java 8 支持。使用 Scala API 时,应用程序必须使用与 Spark 编译时相同的 Scala 版本。例如,当使用 Scala 2.13 时,使用为 2.13 编译的 Spark,并为 Scala 2.13 编译代码/应用程序。

来自

Scala - JDK 兼容性

JDK2.12232020年12月2日

来自您分享的

Spark Scala 版本兼容性矩阵

Spark版本3.4.23.4.13.4.0
Cloudera 支持的二进制版本 斯卡拉 2.12
2.12 2.12.17
2.12 2.12.17
2.12 2.12.17
听起来你想设置一个本地环境来在你的机器上进行一些测试,但该作业将在cloudera中执行。

看起来 JDK 23 还不是一个选项。我认为你需要将 JDK 降级到较低版本。不知道为什么你需要目标和源为 1.8,也许你可以升级到 jdk 11。

我的猜测是问题不完全在于插件。我会重点检查您需要使用的 jdk、scala 和 apache Spark 之间哪些是正确的版本

我认为 Apache Spark、JDK 和 Scala 版本的组合不会起作用。

Apache Spark 3.4 不支持 jdk 23。
  • jdk 23 支持 scala 2.12.20(不是 2.12.15)
  • 为什么您对 jdk 23 使用目标和源 1.8?
© www.soinside.com 2019 - 2024. All rights reserved.