如何解决maven错误:JAVA_HOME环境变量未正确定义

3
当我在虚拟环境中检查Maven的版本时,出现以下错误:
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

然而,在虚拟环境之外,我能够打印出Maven的版本。

mvn -version
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T00:58:13-07:00)
Maven home: /usr/local/Cellar/maven/3.5.2/libexec
Java version: 1.8.0_152, vendor: Oracle Corporation
Java home:  /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.6", arch: "x86_64", family: "mac"

我在~/.bash_profile中使用了set命令。
set JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk
set PATH=$JAVA_HOME/jre/bin:$PATH

我不明白这个错误,因为JAVA_HOME指向JDK而不是JRE?谢谢解答!

1个回答

6
这不是正确的做法:
set JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk
请注意,mvn的输出会告诉您Java home的位置是/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/jre。因此,JDK home的位置可能是/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
其次,您需要export该变量,而不仅仅是set它。
请按照以下方式编写:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home

在更新~/.bash_profile后,为了测试设置是否正确,请启动一个新的shell,并检查echo $JAVA_HOME的输出。


1
你是最棒的。那并没有引起我的注意,现在我可以打印它了。谢谢。 - q2w3e4
1
由于这看起来像是MacOS,我将补充一下可以通过export JAVA_HOME=$(/usr/libexec/java_home -v1.8)来更通用地设置JAVA_HOME。这样做的副作用是将所请求的Java版本放置在$PATH中。如果你在一个必须支持多个Java版本的环境中工作,这将特别有用。 - Steve C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接