mvn 执行 clean 报错:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
如题,在执行 mvn clean install
时报错:
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
此时我才想起来,我好像没有配环境里的 JAVA_HOME
之类环境变量:
- 添加
JAVA_HOME
,值为安装目录,并添加%JAVA_HOME%\bin
到 path 中 - 添加
MAVEN_HOME
,值为安装目录,并添加%MAVEN_HOME%\bin
到 path 中 mvn -v
查看 runtime
结果 runtime 还是 jre 目录(JDK1.8 会默认安装一个 jdk1.8 一个 jre1.8)。一怒之下,将 jre 目录删除,得到一个 Error: could not open
D:\Java\jre1.8.0_341\lib\amd64\jvm.cfg'` 报错,mvn 执行也报相同的错误。
很奇怪的状态,jre 已经被删除了,然后还能报这个错,说明是其他地方执行了 java 然后引用到了这个目录文件。恰好使用的是 git-bash 脚本,执行 which java
找到了 java 的执行目录 C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java
,这个还是 JDK1.8 安装的内容。查看 path 参数,发现这个 jre 的目录地址在 JAVE_HOME 的前面,所以优先执行了 jre 中的 java。
从 path 中删除该目录,终于好了。最终的 runtime: D:\Java\jdk1.8.0_341\jre
。
注:如果此时 java 还是不能执行,可以 echo $PATH 看一下 java 的 bin 目录地址显示是否正确,如果像我一样显示为
%JAVE_HOME%/bin,这就是变量名配置错了,
JAVE_HOME 不存在,应该是
JAVA_HOME`。