如何让macos(catalina)使用定制的java版本?

zbq4xfa0  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(279)

我正在尝试将机器上的默认java版本从版本15(即OpenJDK15.0.1)更改为版本11(即OpenJDK11.0.2)。我关注了网上提供的各种解决方案,但归根结底,我只想得到以下结果:

$ java --version
openjdk 11.0.9 2020-10-20
OpenJDK Runtime Environment (build 11.0.9+9)
OpenJDK 64-Bit Server VM (build 11.0.9+9, mixed mode, sharing)

但是相反,我得到:

$ java --version
openjdk 15.0.1 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9)
OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)

我找到的大多数解决方案都建议给我的 JAVA HOME 环境变量(在线和在线 .bash_profile ),截至目前,我有:

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

甚至移除 jdk-15.0.1.jdk 完全来自 /Library/Java/JavaVirtualMachines/ 似乎什么都没变。因此,这个jdk必须在其他地方定义和使用,它的存在将覆盖我在我的文档中放置的任何东西 .bash_profile 文件。以前有其他人经历过吗?这种变化可能吗?

bbmckpt7

bbmckpt71#

确保你的第一行 .bash_profile 谈论的文件 JAVA_HOME 这是:

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

你可以跑了 /usr/libexec/java_home -V 查看所有已安装java虚拟机的列表。在我的机器上,我有以下内容(我的看起来略有不同,因为这个输出来自big sur):

Matching Java Virtual Machines (6):
    15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home
    11.0.9 (x86_64) "UNDEFINED" - "OpenJDK 11.0.9" /usr/local/Cellar/openjdk@11/11.0.9/libexec/openjdk.jdk/Contents/Home
    11.0.6 (x86_64) "Oracle Corporation" - "Java SE 11.0.6" /Library/Java/JavaVirtualMachines/jdk-11.0.6.jdk/Contents/Home
    11.0.1 (x86_64) "Oracle Corporation" - "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
    1.8.0_275 (x86_64) "UNDEFINED" - "OpenJDK 8" /usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home
    1.8.0_131 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home

最底层的线条(在catalina可能不存在,但你可以通过运行 /usr/libexec/java_home 是当前选定的jvm。

v6ylcynt

v6ylcynt2#

原来这个问题在我的范围内 .bash_profile . 虽然我不确定是否每个人都是这样,但我的 PATH 环境变量设置取代了我的 JAVA_HOME 环境变量 PATH 变量有我的引用 JAVA_HOME 内部变量。通过在我的 .bash_profile 文件。
如果 JAVA_HOME 是唯一添加的变量,那么下面的操作就可以了。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export PATH=$JAVA_HOME/bin

如果还有其他人,那么这应该是可行的。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export SOME_OTHER_PATH=/somepath

export PATH=$SOME_OTHER_PATH:$JAVA_HOME/bin

谢谢大家的帮助!

相关问题