【问题标题】:change java version in macOS BigSur在 macOS BigSur 中更改 java 版本
【发布时间】:2021-01-11 16:34:32
【问题描述】:

我无法在 macOS BigSur 中更改 java 版本。 我有以下版本:

当我执行这个命令时

/usr/libexec/java_home -V

我有以下版本:

Matching Java Virtual Machines (3):
    11.0.8 (x86_64) "Oracle Corporation" - "Java SE 11.0.8" /Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
    1.8.261.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_261 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home

我想切换到 java 1.8 作为默认版本,所以我执行了这个命令:

export JAVA_HOME=/usr/libexec/java_home -v 1.8.0_261

然后当我检查 java 版本时:

java -version

我还是有旧的(更高的)

java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)

为什么它不起作用?

【问题讨论】:

    标签: java macos java-8 java-home


    【解决方案1】:

    请使用以下命令:-

    export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_261`
    

    【讨论】:

    • 它不工作,我仍然有 java 11 作为 java 版本
    • @leonidas79 运行该命令后,然后运行 ​​set | grep JAVA 它会显示什么?
    • 反引号的用途是指命令运行,然后将其输出到变量JAVA_HOME中。
    • 当我运行 set | grep JAVA,我得到这个:JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/home
    • 谢谢!工作。我遇到了 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 这个主页设置为默认值但我想使用 JDK 1.8,java -version 显示 1.8 但仍然无法找到 1.8 sun 工具的问题。上面的命令正确设置了主页并且它起作用了。
    【解决方案2】:

    你必须取消设置 JAVA_HOME 并设置 JAVA_VERSION 然后就可以了。

    ~% JAVA_VERSION=12 java -version
    openjdk version "14.0.2" 2020-07-14
    ~% export JAVA_VERSION=12
    ~% java -version
    openjdk version "14.0.2" 2020-07-14
    ~% unset JAVA_HOME
    ~% java -version
    java version "12.0.1" 2019-04-16
    ~% JAVA_VERSION=13 java -version
    java version "13-ea" 2019-09-17
    

    或者如果你需要设置 JAVA_HOME 你需要在调用/usr/libexec/java_home之前取消设置

    function jav {
    unset JAVA_HOME
    export JAVA_HOME=`/usr/libexec/java_home -v $@`
    }
    ~% jav 12
    ~% java -version
    java version "12.0.1" 2019-04-16
    ~% jav 13
    ~% java -version
    java version "13-ea" 2019-09-17
    

    【讨论】:

    • "unset JAVA_HOME" :取消设置 JAVA_HOME 确实对我有用,即使“set | grep JAVA”显示 JAVA_HOME=' ':
    【解决方案3】:

    现在/usr/bin/java 有新的二进制文件,它的优先级高于$JAVA_HOME/bin/java

    【讨论】:

    • 修复:export PATH=$JAVA_HOME/bin:$PATH,在/usr/bin/java前面从JAVA_HOME制作二进制
    • 是的,这是从哪里来的,我们如何修改它?
    • 此 PATH 导出到 ~/.bash_profile 或您的其他 shell 配置文件中,例如。 ~/.zshrc 用于 zShell。你可能需要source ~/.bash_profile,或者之后打开新的终端窗口
    【解决方案4】:

    在将 macOS 升级到 Big Sur 后,我今天对同样的问题感到困惑。

    我的 Mac 上有两个 JDK,Oracle JDK 11 和 Oracle JDK 8。

    然后/usr/libexec/java_home 总是返回/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home 并忽略其他参数,如-v 1.8

    经过一些测试,我发现只有当你的 Mac 有 Oracle JDK 1.8.X 版本时才会出现这种情况。

    所以我删除了Oracle JDK 1.8.x,/usr/libexec/java_home 可以返回正确的JDK 11 路径。

    然后我尝试了 AdoptOpenJDK 8,/usr/libexec/java_home 可以正确返回其路径,但忽略 -v 11 arg,无法获取 JDK 11 的路径。

    java_home 命令中似乎存在一些错误,如果您的 Mac 上只有一个 JDK(Oracle JDK 8 除外),它应该可以正常工作。如果您有多个 JDK,也许它只是返回最后安装的 JDK 路径。

    所以要么只保留一个 JDK 安装,要么将$JAVA_HOME env 设置为绝对路径即可。

    【讨论】:

      【解决方案5】:

      在我看来,命令"/usr/libexec/java_home -v" 不起作用。我解决了直接导出文件.bash_profile中的java路径:

      export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
      

      然后执行命令:

      source .bash_profile.
      

      在此之后使用命令: echo $JAVA_HOME 已经看到JVM路径设置正确了。

      【讨论】:

      • 这很奇怪。在我们的构建机器上,我没有这个。在我的本地机器上,我也没有这个,但也没有 Android Gradle 构建问题。在构建机器上添加了这个,现在它工作得很好。不知道为什么我的本地笔记本电脑不需要它
      【解决方案6】:

      我在我的 .zshenv 上添加了以下内容,它运行良好。谢谢穆南。

      ## Java home
      export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
      export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
      
      ## Java alias
      alias java8='export JAVA_VERSION=1.8'
      alias java11='export JAVA_VERSION=11'
      

      要从控制台更改 java 版本,请使用:java8 或 java11

      【讨论】:

        【解决方案7】:

        我也是,好烦,给我添麻烦了。 他似乎可以通过设置'$JAVA_VERSION'来解决。 请使用以下命令:-

        export JAVA_VERSION=11
        

        【讨论】:

        • 完美运行
        猜你喜欢
        • 2021-03-04
        • 2021-07-05
        • 2014-07-18
        • 2014-03-24
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多