macOS 安装多版本Java

13

在macOS上安装多版本Java是一个常见需求,特别是当你需要在不同项目中使用不同Java版本时。以下是完整的安装和管理方法:

一、安装Homebrew(如果尚未安装)

Homebrew是macOS上最流行的包管理器,用于安装Java和相关工具:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,验证是否安装成功:

brew --version

二、使用Homebrew安装多版本Java

Homebrew提供了不同版本的Java包,包括Java 8、Java 11、Java 17等:

# 安装Java 8 (LTS)
brew install openjdk@8

# 安装Java 11 (LTS)
brew install openjdk@11

# 安装Java 17 (LTS)
brew install openjdk@17

# 安装最新版本
brew install openjdk

安装完成后,需要创建符号链接以允许系统使用这些Java版本:

# 为Java 8创建链接
sudo ln -sfn /usr/local/opt/openjdk@8/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-8.jdk

# 为Java 11创建链接
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk

# 为Java 17创建链接
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

三、验证已安装的Java版本

使用以下命令查看系统中已安装的所有Java版本:

/usr/libexec/java_home -V

这将显示类似如下输出:

Matching Java Virtual Machines (3):
    17.0.6 (x86_64) "Homebrew" - "OpenJDK 17.0.6" /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
    11.0.18 (x86_64) "Homebrew" - "OpenJDK 11.0.18" /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
    1.8.0_362 (x86_64) "Homebrew" - "OpenJDK 8" /Library/Java/JavaVirtualMachines/openjdk-8.jdk/Contents/Home

四、配置环境变量以管理Java版本

为了方便切换Java版本,需要配置环境变量。打开你的shell配置文件(如<span class="ne-text">~/.zshrc</span><span class="ne-text">~/.bash_profile</span>),添加以下内容:

# Java版本管理函数
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_17_HOME=$(/usr/libexec/java_home -v17)
export JAVA_HOME=$JAVA_17_HOME  # 默认使用Java 17

# 切换Java版本的函数
java8() {
    export JAVA_HOME=$JAVA_8_HOME
    java -version
}

java11() {
    export JAVA_HOME=$JAVA_11_HOME
    java -version
}

java17() {
    export JAVA_HOME=$JAVA_17_HOME
    java -version
}

保存文件后,执行以下命令使配置生效:

source ~/.zshrc  # 如果你使用zsh
# 或者
source ~/.bash_profile  # 如果你使用bash

五、切换Java版本

现在你可以使用以下命令在不同Java版本之间切换:

# 切换到Java 8
java8

# 切换到Java 11
java11

# 切换到Java 17
java17

每次切换后,系统会显示当前使用的Java版本。

六、使用JEnv管理Java版本(高级选项)

如果你需要更灵活的Java版本管理,可以安装JEnv:

brew install jenv

添加JEnv到你的shell配置:

echo 'eval "$(jenv init -)"' >> ~/.zshrc  # 或 ~/.bash_profile
source ~/.zshrc  # 或 ~/.bash_profile

将已安装的Java版本添加到JEnv:

jenv add /Library/Java/JavaVirtualMachines/openjdk-8.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home

查看已添加的版本:

jenv versions

全局设置Java版本:

jenv global 11.0  # 设置Java 11为全局默认版本

为特定项目设置Java版本:

cd your-project-directory
jenv local 1.8  # 设置Java 8为当前项目的版本

通过这些方法,你可以在macOS上轻松安装和管理多个Java版本,并根据需要灵活切换。