在 macOS BigSur 中更改 java 版本
change java version in macOS BigSur
我无法在 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`
今天将 macOS 升级到 Big Sur 后,我对同样的问题感到困惑。
我的 Mac、Oracle JDK 11 和 Oracle JDK 8 上有两个 JDK。
然后 /usr/libexec/java_home
始终 return /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
并忽略其他参数,例如 -v 1.8
经过一些测试我发现,只有当您的 Mac 有 Oracle JDK 1.8.X 版本时才会发生这种情况。
所以我删除了OracleJDK1.8.x,/usr/libexec/java_home
可以return正确的JDK11路径.
然后我试了AdoptOpenJDK 8,/usr/libexec/java_home
可以return它的路径正确,但是忽略了-v 11
参数,无法得到[=的路径36=]11.
似乎 java_home
命令中有一些错误,如果你的 Mac 上只有一个 JDK - 除了 Oracle JDK 8 - 它应该可以正常工作.如果你有多个
JDKs,也许它只是 return 最后安装的 JDK 路径。
所以要么只保留一个JDK安装,要么用绝对路径设置$JAVA_HOME
env。
我也是,好烦,他给我添麻烦了。
他好像是通过设置'$JAVA_VERSION'来解决的。
请使用以下命令:-
export JAVA_VERSION=11
您必须取消设置 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
我在我的 .zshenv 上添加了以下内容,并且运行良好。谢谢munan.
## 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
现在 /usr/bin/java
有新的二进制文件,它的优先级高于 $JAVA_HOME/bin/java
在我看来命令 "/usr/libexec/java_home -v"
不起作用。我解决了直接导出文件中的 java 路径。bash_profile:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
然后执行命令:
source .bash_profile.
在此之后使用命令:
echo $JAVA_HOME 我发现 JVM 路径设置正确。
我无法在 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`
今天将 macOS 升级到 Big Sur 后,我对同样的问题感到困惑。
我的 Mac、Oracle JDK 11 和 Oracle JDK 8 上有两个 JDK。
然后 /usr/libexec/java_home
始终 return /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
并忽略其他参数,例如 -v 1.8
经过一些测试我发现,只有当您的 Mac 有 Oracle JDK 1.8.X 版本时才会发生这种情况。
所以我删除了OracleJDK1.8.x,/usr/libexec/java_home
可以return正确的JDK11路径.
然后我试了AdoptOpenJDK 8,/usr/libexec/java_home
可以return它的路径正确,但是忽略了-v 11
参数,无法得到[=的路径36=]11.
似乎 java_home
命令中有一些错误,如果你的 Mac 上只有一个 JDK - 除了 Oracle JDK 8 - 它应该可以正常工作.如果你有多个
JDKs,也许它只是 return 最后安装的 JDK 路径。
所以要么只保留一个JDK安装,要么用绝对路径设置$JAVA_HOME
env。
我也是,好烦,他给我添麻烦了。 他好像是通过设置'$JAVA_VERSION'来解决的。 请使用以下命令:-
export JAVA_VERSION=11
您必须取消设置 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
我在我的 .zshenv 上添加了以下内容,并且运行良好。谢谢munan.
## 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
现在 /usr/bin/java
有新的二进制文件,它的优先级高于 $JAVA_HOME/bin/java
在我看来命令 "/usr/libexec/java_home -v"
不起作用。我解决了直接导出文件中的 java 路径。bash_profile:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
然后执行命令:
source .bash_profile.
在此之后使用命令: echo $JAVA_HOME 我发现 JVM 路径设置正确。