【发布时间】: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”的那个