如何在 Mac OSX 上的 Java 版本之间切换? [复制]

Posted

技术标签:

【中文标题】如何在 Mac OSX 上的 Java 版本之间切换? [复制]【英文标题】:How to switch between releases of Java on Mac OSX? [duplicate] 【发布时间】:2019-04-19 19:08:06 【问题描述】:

我在 Mac OSX 上安装了 3 个 Java 8 版本。我需要暂时切换到旧版本,因为我使用的程序与新版本存在问题。

/Library/Java/JavaVirtualMachines >>> ls -al
total 0
drwxr-xr-x  5 root  wheel  160 Nov  1 11:12 .
drwxr-xr-x  4 root  wheel  128 Sep 21 00:02 ..
drwxr-xr-x  3 root  wheel   96 Jun 16  2017 jdk1.8.0_131.jdk
drwxr-xr-x  3 root  wheel   96 Oct 16  2017 jdk1.8.0_144.jdk
drwxr-xr-x  3 root  wheel   96 Oct 24 12:02 jdk1.8.0_181.jdk

/Library/Java/JavaVirtualMachines >>> which java
/usr/bin/java

/usr/bin >>> ls -al java
lrwxr-xr-x  1 root  wheel  74 Nov  1 11:03 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

如何让 jdk1.8.0_144.jdk 暂时成为 java 的当前系统版本,直到我可以更新程序?

谢谢,

【问题讨论】:

通过设置 $PATH 环境变量。导出 PATH=:$PATH 是的,该问题的答案之一包含我正在寻找的链接:gist.github.com/hogmoru/8e02cf826c840914a8ed93fd418ed88e 基本上,我只需要进入此目录 /Library/Java/JavaVirtualMachines/jdk1。 8.0_181.jdk/Contents 然后我需要: sudo mv Info.plist Info.plist.disabled 【参考方案1】:

运行此命令以查看您当前拥有的 Java 版本:

/usr/libexec/java_home -V

输出将是这样的:

Matching Java Virtual Machines (2):
1.8, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8/jdk/Contents/Home
1.6, x86_64:   "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.jdk/Contents/Home

按照export 命令选择您想要的Java 版本作为默认export JAVA_HOME ='/usr/libexec/java_home -v 1.6' 在你的 shell 的初始化文件中。

希望对你有帮助

【讨论】:

【参考方案2】:

JAVA_HOME 环境变量设置为所需的 JDK 版本应该可以解决问题。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 添加到您的.bash_profile

【讨论】:

正如上面 cmets 中提到的@sainageswar-s,您可能还必须将$JAVA_HOME 环境变量预先附加到$PATH。问题是默认情况下/usr/bin/java 有一个符号链接可能会被拾取。

以上是关于如何在 Mac OSX 上的 Java 版本之间切换? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查安装在 osx 和 centos 上的所有 python 版本

MAC下安装多版本JDK和切换几种方式

Mac OSX Java 终端版本不正确

如何将midi从java程序发送到OSX上的IAC总线

在Mac OSX上自定义Shell

摆动菜单 Java 7 mac osx