繁体   English   中英

"(Mac OS) JAVA 版本不变"

[英](Mac OS) JAVA version does not change

我的 Macbook 上有 2 个 JAVA 版本。 我想将版本从 14 更改为 11。我在互联网上找到了 2 个解决方案,但都不起作用。

我的java -version结果是

openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+14)
OpenJDK 64-Bit Server VM (build 14.0.1+14, mixed mode, sharing)

第一个解决方案( 如何在 OS X 上设置或更改默认 Java (JDK) 版本? ),我运行/usr/libexec/java_home -V然后我得到以下结果,

Matching Java Virtual Machines (2):
14.0.1, x86_64: "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
11.0.8, x86_64: "Java SE 11.0.8"    /Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home

然后我做了

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`

java -version检查后,结果仍然是 14.0.1

第二种解决方案( 如何在 Mac 中永久设置 JAVA_HOME? ),我编辑 ~/.bash_profile 文件如下,

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`

我运行命令

source ~/.bash_profile
echo $JAVA_HOME

它显示了结果,

/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home

但是当我用java -version检查结果时,它仍然是 14.0.1

安装sdkman ,它可以处理您必须使用的相当乏味的命令行伏都来尝试实现这一点。 问题是,JAVA_HOME 只是一个环境变量,它不会改变任何东西——只有明确寻找它的工具(通常,例如 maven 和 ant)才会受到干扰它的影响。 当您在 mac 上键入java时,它会运行/usr/bin/java ,这不是一个即使作为 root 也可以更改的文件。 然后这个 java 将调用真正的 java,并且不查看 JAVA_HOME来完成工作:它是/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java的软链接,因为它在/System你也不能改变它,即使是 root 也不能​​。

这就是为什么这如此困难,也是为什么您需要一个不错的工具 (sdkman) 来为您完成这项工作的原因。

尝试export JAVA_HOME='/usr/libexec/java_home -v 11' (没有次要版本),它会在 Mac 上为我输出正确的 java -version。

删除 JAVA_HOME 周围的引号,然后设置路径变量变量对我有用(Mac OS Catalina):

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

如果您需要在版本之间切换并且已经安装了 JDK,您可以使用重置JAVA_HOME并每次重新初始化PATH的别名来调整您的 bash 配置文件:

export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_14_HOME=$(/usr/libexec/java_home -v14)

alias java11='export JAVA_HOME=$JAVA_11_HOME; export PATH=$JAVA_HOME/bin:$PATH'
alias java14='export JAVA_HOME=$JAVA_14_HOME; export PATH=$JAVA_HOME/bin:$PATH'

然后,重新启动终端会话后,您可以来回切换:

$ java11
$ java -version

$ java14
$ java -version

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM