【问题标题】:Not able to switch java home properly in mac无法在mac中正确切换java home
【发布时间】:2018-12-10 05:37:48
【问题描述】:

我的 mac 中有两个版本的 Java,我正在尝试从 1.8 切换到 1.7 来编译我的一个具有 1.7 特定内容的项目。虽然我在终端中运行了以下命令:

$ alias setJdk1.7='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)'
$ setJdk1.7

这样,我可以在 java -version 和 mvn -version 中看到正确的版本。

$ java -version

java version "1.7.0_181"
Java(TM) SE Runtime Environment (build 1.7.0_181-b09)
Java HotSpot(TM) 64-Bit Server VM (build 24.181-b09, mixed mode)

$ mvn -version

Apache Maven 3.0.5 (...)
Maven home: *mvn path*
Java version: 1.7.0_181, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_181.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.13.5", arch: "x86_64", family: "mac"

但是,/usr/libexec/java_home 似乎仍然只指向 1.8 java。

$ echo $(/usr/libexec/java_home)
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

我对 mac 很陌生,不太确定如何在版本之间切换。这不允许成功编译我的项目。

【问题讨论】:

    标签: java macos version


    【解决方案1】:

    也许尝试改用函数并按如下方式设置您的命令:

    setJdk1.7() {
        export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
        export PATH=$JAVA_HOME/bin:$PATH
    }
    

    您的命令可能不起作用,因为$JAVA_HOME 从未添加到您的$PATH

    【讨论】:

    • 这可能是一个愚蠢的问题,我如何执行一个函数?它应该在.bash 中吗?无论如何,我尝试分别运行这两个命令, echo $JAVA_HOME 给出了 1.7 版本但是 /usr/libexec/java_home 的 echo 仍然显示 1.8
    • 要执行一个函数,它很像一个别名,所以你只需在终端提示符下执行setJdk1.7。能否请您发布命令/usr/libexec/java_home -V 的输出。
    • $ /usr/libexec/java_home -V 匹配 Java 虚拟机 (2): 1.8.0_151, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/内容/主页 1.7.0_181、x86_64:“Java SE 7”/Library/Java/JavaVirtualMachines/jdk1.7.0_181.jdk/Contents/Home
    • @SRS:事情似乎在正确的地方;在更改/检查版本时,您总是在同一个终端窗口中吗? export JAVA_HOME=$(/usr/libexec/java_home -v 1.7.0) 也有什么不同吗(注意最后的零)?
    猜你喜欢
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 2021-10-17
    • 2018-06-27
    • 2016-01-14
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多