在macOS BigSur中更改Java版本

问题描述

我无法在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)

为什么不起作用?

解决方法

请使用以下命令:-

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

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

-AppleMagnifiedMode YES

或者如果您需要设置JAVA_HOME,则需要在调用~% 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

之前取消设置
/usr/libexec/java_home
,

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

,

在我看来命令 "/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 路径设置正确。

,

今天,在将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设置为绝对路径就可以了。

,

我在.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

,

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

export JAVA_VERSION=11