【问题标题】:How to fix the maven error The JAVA_HOME environment variable is not defined correctly如何修复maven错误JAVA_HOME环境变量未正确定义
【发布时间】:2017-11-11 22:00:22
【问题描述】:

当我在虚拟环境中检查 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?感谢您的回答!

【问题讨论】:

    标签: java maven


    【解决方案1】:

    这是不正确的:

    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的输出。

    【讨论】:

    • 你是最棒的。那没有引起我的注意,我现在可以打印了。谢谢。
    • 因为这看起来像 MacOS,我将补充一点,您可以更一般地使用export JAVA_HOME=$(/usr/libexec/java_home -v1.8) 设置 JAVA_HOME。这具有将请求的 Java 版本放置在 $PATH 中的附加副作用。如果您在必须支持多个 Java 版本的环境中工作,这将特别有用。
    猜你喜欢
    • 2017-11-24
    • 1970-01-01
    • 2020-05-21
    • 2018-09-30
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多