尽管它正确指向了 JDK,但输出结果仍然如此
C:\Users\{usr}>mvn -version
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
C:\Users\{usr}>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_191
我尝试了相反的方法,即将 JAVA_HOME 指向 JRE,这种方法对我有用,尽管它说要将其路径设置为 JDK 而不是 JRE
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: C:\Program Files\Maven\apache-maven-3.6.1\bin\..
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jre1.8.0_191
Default locale: en_PH, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
细节:
- Apache-maven-3.6.1
- jdk1.8.0_191
- jre1.8.0_191
- %JAVA_HOME% = C:\Program Files\Java\jdk1.8.0_191
- %MAVEN_HOME% = C:\Program Files\Maven\apache-maven-3.6.1
我不太明白为什么它的行为是这样的,尽管它明确地说要使用 JDK 和不是JRE
答案1
尽管在 Windows 和 Linux 中的 Linux 子系统上都设置了 JAVA_HOME、MAVEN_HOME 和 JAVACMD 环境变量,但我还是遇到了同样的问题。我最终通过编辑 maven 目录的 conf 文件夹中的 settings.xml 文件使其正常工作。我添加了一个如下所示的配置文件:
<profile>
<id>myprofile</id>
<activation>
<jdk>1.8</jdk>
</activation>
<properties>
<java.home>/path/to/jdk</java.home>
</properties>
</profile>
并将活动配置文件设置为该配置文件
<activeProfiles>
<activeProfile>myprofile</activeProfile>
</activeProfiles>
由于某种原因,java.home maven 变量似乎与 JAVA_HOME 环境变量不同。