在macOS BigSur中更改Java版本

mfpqipee  于 2023-01-24  发布在  Java
关注(0)|答案(9)|浏览(165)

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

为什么不管用

pengsaosao

pengsaosao1#

请使用以下命令:-

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

9udxz4iz2#

你必须取消设置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
b0zn9rqh

b0zn9rqh3#

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

vaj7vani

vaj7vani4#

我一直困惑与同样的问题后,今天升级macOS到大苏尔。
我的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参数,无法获得JDK 11的路径。
看起来java_home命令有一些错误,如果你的Mac上只有一个JDK-除了Oracle JDK 8-它应该工作正常。如果你有多个JDK,也许它只是返回最后安装的JDK路径。
因此,只保留一个JDK安装或使用绝对路径设置$JAVA_HOME env都可以。

kyxcudwk

kyxcudwk5#

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

neskvpey

neskvpey6#

我已经在我的. zshev上添加了以下内容,它运行得很好。谢谢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版本,请用途:Java 8或Java 11

6ju8rftf

6ju8rftf7#

更新:Mac操作系统13.1

当您安装openjdk版本时(除了系统/默认安装的版本之外),例如:

brew install openjdk@11

(in至少在我的情况下)默认情况下,它没有链接到正确的位置。您需要按照下面的说明符号链接它

sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

这样,当您运行/usr/libexec/java_home -V时,您将看到所有已安装的版本

Matching Java Virtual Machines (2):
    19.0.1 (arm64) "Homebrew" - "OpenJDK 19.0.1" /opt/homebrew/Cellar/openjdk/19.0.1/libexec/openjdk.jdk/Contents/Home
    11.0.18 (arm64) "Homebrew" - "OpenJDK 11.0.18" /opt/homebrew/Cellar/openjdk@11/11.0.18/libexec/openjdk.jdk/Contents/Home

选择正确的变量就像设置env变量$JAVA_HOME一样简单

export JAVA_HOME=`/usr/libexec/java_home -v 11`  # to set to java 11, for eg

运行java --version确认:

openjdk 11.0.18 2023-01-17
OpenJDK Runtime Environment Homebrew (build 11.0.18+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.18+0, mixed mode)
f1tvaqid

f1tvaqid8#

我按照以下步骤修复了在macOS BigSur中设置Java版本所需的问题:
执行此命令时

/usr/libexec/java_home -V

我有以下版本:

Matching Java Virtual Machines (3):
17 (x86_64) "Homebrew" - "OpenJDK 17" /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home
11.0.17.0-m1 (x86_64) "IBM Corporation" - "IBM Semeru Runtime Open Edition 11" /Users/airasia/Library/Java/JavaVirtualMachines/semeru-11.0.17/Contents/Home
1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

/usr/本地/存储单元/openjdk/17/libexec/openjdk. jdk/目录/主页
然后,我想切换到java 1.8作为默认版本,所以我执行了以下命令:

echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)' >> ~/.profile

然后当我检查java版本时:

java --version

我还在拿旧的(高的)

openjdk 17 2021-09-14
OpenJDK Runtime Environment Homebrew (build 17+0)
OpenJDK 64-Bit Server VM Homebrew (build 17+0, mixed mode, sharing)

~/.profile文件看起来像

vim ~/.profile
export JAVA_HOME=/usr/local/opt/openjdk/bin
export PATH=$JAVA_HOME/bin:$PATH

然后我查了一下

set | grep JAVA         
JAVA_HOME=JAVA_HOME=/usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home

然后我在~/.profile文件中添加了新的JAVA_HOME

vim ~/.profile
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
export PATH=$JAVA_HOME/bin:$PATH

执行了它,

source ~/.profile

现在java指向1.8.0_292

java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)

要再次回退到openjdk 17,我只需要删除一行,

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

再加上,

export JAVA_HOME=/usr/local/opt/openjdk/bin

执行了它,

source ~/.profile
rur96b6h

rur96b6h9#

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

export JAVA_VERSION=11

相关问题