如何在macOS上配置jdk环境变量

本文展示了如何在较旧的Mac OS X和最新的macOS11上设置 $JAVA_HOME 环境变量。

解决方案

在macOS上设置 $JAVA_HOME 环境变量的步骤。

1. 找出你的macOS版本。

2. 找出你用的是哪个shell,bash还是zsh?

3. 对于zsh shell,在 ~/.zshenv~/.zshrc 导出 $JAVA_HOME

4. 对于bashshell,将 $JAVA_HOME 导出到 ~/.bash_profile~/.bashrc

5. 使用 echo $JAVA_HOME 进行测试。

6. 完成。

macOS发布历史,bash还是zsh?

回顾macOS发布历史,来源:Wikipedia–macOS

  1. Mac OS X Public Beta
  2. Mac OS X 10.0 (Cheetah)
  3. Mac OS X 10.1 (Puma)
  4. Mac OS X 10.2 Jaguar
  5. Mac OS X 10.3 Panther
  6. Mac OS X 10.4 Tiger
  7. Mac OS X 10.5 Leopard
  8. Mac OS X 10.6 Snow Leopard
  9. Mac OS X 10.7 Lion
  10. OS X 10.8 Mountain Lion
  11. OS X 10.9 Mavericks
  12. OS X 10.10 Yosemite
  13. OS X 10.11 El Capitan
  14. macOS 10.12 Sierra
  15. macOS 10.13 High Sierra
  16. macOS 10.14 Mojave
  17. macOS 10.15 Catalina (zsh)
  18. macOS 11 Big Sur (zsh)

bash还是zsh?

在MacOS 10.15 Catalina和更高版本上,默认的终端shell从bash(BourneShell)切换到zsh(Zshell)。

对于bashshell,我们可以将环境变量放在 ~/.bash_profile~/.bashrc 中。

对于zsh shell,我们可以将环境变量设置为 ~/.zshenv~/.zshrc

我们可以打印 $SHELL 环境变量来确定您正在使用的当前SHELL。

% echo $SHELL
/bin/zsh

什么是/usr/libexec/java_home

在MacOS X 10.5或更高版本上,我们可以使用 /usr/libexec/java_home 返回默认JDK的位置。

% /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

另外,查找所有已安装的jdk。

% /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
16 (x86_64) "Oracle Corporation" - "OpenJDK 16-ea" /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home
14.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.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
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

另外,运行指定的JDK命令。

% /usr/libexec/java_home -v1.8
/usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home

$JAVA_HOME和macOS 11 Big Sur

在macOS 10.15 Catalina及更高版本上,zsh是默认的终端shell,我们可以在 ~/.zshenv~/.zshrc 中设置 $JAVA_HOME 环境变量。

打开 ~/.zshenv

% nano ~/.zshenv

添加以下内容

export JAVA_HOME=$(/usr/libexec/java_home)

源文件并打印 $JAVA_HOME ,完成。

% source ~/.zshenv
% echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

$JAVA_HOME和Mac OS X 10.5 Leopard

对于较旧的Mac OS X,bash是默认的终端shell,我们可以在 ~/.bash_profile~/.bashrc 中设置 $JAVA_HOME 环境变量。

打开 ~/.bash_profile

% nano ~/.bash_profile

添加以下内容

export JAVA_HOME=$(/usr/libexec/java_home)

源文件并打印 $JAVA_HOME

% source ~/.bash_profile
% echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

$JAVA_HOME和旧版Mac OS X

在旧的MacOS X 上,工具 /usr/libexec/java_home 不存在,我们需要将 $JAVA_HOME 设置为真实路径。

打开 ~/.bash_profile

% nano ~/.bash_profile

添加以下内容

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

源文件并打印 $JAVA_HOME

% source ~/.bash_profile
% echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

在不同的JDK版本之间切换

例如,这个macOS包含四个JDK:1.8、14、15和16,默认JDK是16。

% /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
16 (x86_64) "Oracle Corporation" - "OpenJDK 16-ea" /Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home
15.0.1 (x86_64) "UNDEFINED" - "OpenJDK 15.0.1" /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home
14.0.2 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 14" /Library/Java/JavaVirtualMachines/adoptopenjdk-14.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
/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

对于zsh shell,编辑 ~/.zshenv

% nano ~/.zshenv

/usr/libexec/java_home-v {$Version} 激活指定的JDK版本。

添加以下内容以激活JDK1.8

export JAVA_HOME=$(/usr/libexec/java_home -v1.8)

如果我们想要JDK14。

export JAVA_HOME=$(/usr/libexec/java_home -v14)

如果我们想要JDK15。

export JAVA_HOME=$(/usr/libexec/java_home -v15)

源文件并打印 $JAVA_HOME ,完成。

% source ~/.zshenv
% echo $JAVA_HOME
/usr/local/Cellar/openjdk@8/1.8.0+275/libexec/openjdk.jdk/Contents/Home
老K的Java博客
我还没有学会写个人说明!
上一篇

我身边的高T,问了Java面试者这样的问题......

下一篇

HQYJ嵌入式学习笔记——C语言复习day1

你也可能喜欢

评论已经被关闭。

插入图片