【问题标题】:Maven Compilation Failure. No compiler is provided in this environment [Mac OS]Maven 编译失败。此环境中未提供编译器 [Mac OS]
【发布时间】:2021-11-26 14:04:29
【问题描述】:

Maven 突然停止编译并出现以下错误。今天早上它还在工作,我不确定是什么原因造成的。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project ExampleProject: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
基本信息:
  • 操作系统:Mac
  • 机器:MacBook Pro
  • Java:1.8.0_201 (jdk8)
  • Maven:3.8.1

我尝试了什么:

  • 检查是否存在 Java 编译器
$ javac -version
javac 1.8.0_201
  • 检查$JAVA_HOME:我得到/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home,根据Maven's installation instructions,这对于Mac OS 是正确的

  • 编译前将mvn添加到PATH

  • 重新安装 Maven 3.8.1

  • 重新安装JDK8并重置JAVA_HOME并在编译之前再次将mvn添加到PATH

  • 在我的命令中添加了sudo。事实上,在添加sudo 之前,我遇到了some sorta "failed to delete something" 错误。

  • 在不使用“重新打开窗口...”选项的情况下重新启动我的笔记本电脑。

  • 将编译器选项添加到pom.xml(今天早上工作时我不需要这个)

  • 运行 mvn -v 给我下面的输出

    Maven home: /opt/apache-maven-3.8.3
    Java Version: 1.8.0_201, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre
    Default locale: en_GB, platform encoding: UTF-8
    OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
    
  • 运行java -version 给了我以下输出:

    java version "1.8.0_201"
    Java (TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot (TM) 64-Bit Server VM (build 25.201.b09, mixed mode)
    
附加信息:

我没有使用任何 IDE,例如 Eclipse/IntelliJ/NetBeans。只是纯粹在终端上。请以此为依据回答。

我的系统上似乎有 2 个版本的 Maven,可能是由于重新安装。但是在重新安装之前,这个问题已经开始了

参考(我也试过这里的解决方案)

https://roufid.com/no-compiler-is-provided-in-this-environment/

编辑

  • 通过咨询 Maven 的 documentation,我已经确定 JAVA_HOME 指向 JDK 而不是 JRE

【问题讨论】:

  • 指向 JAVA_HOME 的指针指向 JRE 而 not 指向 JDK...此外,您提供了两个不同版本的 Maven,第一个 3.8.1 而第二个输出 mvn --version 显示3.8.3 ?
  • 感谢您与我们联系。我的 Maven 版本是 3.8.3。至于 JAVA_HOME,我遵循了 Maven 的安装指南maven.apache.org/install.html。否则,JAVA_HOME 应该是什么?你是对的,版本不同(那里没有错字)。可能是由于重新安装。
  • 输出显示/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/jre,其中jre 部分位于末尾...尝试/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home ..代替...
  • 嗨@khmarbaise。您正在谈论的输出来自 mvn -v。我已经将 JAVA_HOME 设置为没有“jre”的那个

标签: java macos maven


【解决方案1】:

Maven 需要 javac 来编译你的项目。你可以试试 javac -version 看看你能不能得到输出。

$ javac -version
javac 1.8.0_201

如果没有将您的 JAVA_HOME 设置为 JDK 而不是 JRE。 C:\Program Files\Java\jdk1.8.0_202

如果您仍然收到此错误,请尝试打开另一个终端以反映环境变量。并尝试。

问候

【讨论】:

  • 嗨。感谢您伸出援手。我也试过了。我已经编辑了我的帖子以添加关于javac的部分
猜你喜欢
  • 2015-09-21
  • 2018-08-25
  • 2019-08-16
  • 2014-02-01
  • 2014-05-08
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
相关资源
最近更新 更多