杰瑞科技汇

Linux下如何切换Java版本?

手动切换(最基础,无需额外工具)

这种方法通过直接修改环境变量来实现,适用于任何 Linux 发行版。

查找已安装的 Java 版本

你需要确认你的系统上已经安装了哪些 Java 版本,Java 安装程序会将可执行文件放在 /usr/bin/ 目录下,并创建符号链接。

使用 update-java-alternatives 命令(在 Debian/Ubuntu 系统上):

# 列出所有已安装的 Java 版本
sudo update-java-alternatives --list

或者,使用 ls 命令查看 /usr/lib/jvm/ 目录(Java 通常安装在这里):

ls /usr/lib/jvm/

或者,使用 ls 查看 /usr/bin/ 下的 Java 相关命令:

ls /usr/bin/java*

临时切换(仅对当前终端会话有效)

如果你只是想在当前打开的终端窗口中临时使用某个 Java 版本,可以直接修改 PATH 环境变量。

假设你有一个 Java 17 的安装路径是 /usr/lib/jvm/java-17-openjdk-amd64/bin,可以这样操作:

# 将 Java 17 的 bin 目录添加到 PATH 的最前面
export PATH="/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH"
# 验证当前使用的 Java 版本
java -version
javac -version

注意:这种方法只在当前终端会话中有效,关闭终端或打开一个新的终端,设置就会失效。

永久切换(推荐,对所有用户和会话生效)

要永久切换 Java 版本,你需要修改系统的环境变量文件,通常是 /etc/environment/etc/profile

步骤 A:找到 Java 安装路径

你需要知道你要切换到的 Java 版本的完整路径,可以使用 update-java-alternatives --list 的输出来帮助判断。

列表显示:

java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.17.0-openjdk-amdbox 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64

这里的第三列就是路径。

步骤 B:修改环境变量文件

方法 1:修改 /etc/environment (推荐)

这个文件为所有用户和所有进程设置环境变量。

  1. sudo 和你喜欢的编辑器(如 nanovim)打开文件:

    sudo nano /etc/environment
  2. 找到 PATH 变量,然后将你想要使用的 Java 版本的 bin 目录添加到 PATH 的最前面。注意保留原有的其他路径

    修改前:

    PATH="/usr/local/bin:/usr/bin:/bin"

    修改后 (假设切换到 Java 17):

    PATH="/usr/lib/jvm/java-1.17.0-openjdk-amd64/bin:/usr/local/bin:/usr/bin:/bin"
  3. 保存文件并退出。

  4. 重新登录或重启系统,让修改生效,或者,你可以运行 source /etc/environment 来使其在当前会话中生效,但这可能不会对所有程序都有效。

方法 2:修改 /etc/profile/etc/profile.d/java.sh

这种方法更灵活,可以为特定用户或所有用户设置。

  1. 创建一个新的配置文件,/etc/profile.d/java.sh

    sudo nano /etc/profile.d/java.sh
  2. 在文件中添加以下内容,将 JAVA_HOMEPATH 指向你的新 Java 版本:

    #!/bin/sh
    export JAVA_HOME=/usr/lib/jvm/java-1.17.0-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
  3. 保存文件并退出。

  4. 让文件可执行:

    sudo chmod +x /etc/profile.d/java.sh
  5. 重新登录或运行 source /etc/profile 来加载配置。

验证永久切换

# 打开一个新的终端窗口
java -version
javac -version
echo $JAVA_HOME

如果输出是你设置的版本,则说明切换成功。


使用专用工具(推荐,更简单)

手动修改环境变量容易出错,而且如果安装了多个版本,管理起来很麻烦,强烈建议使用以下工具来管理 Java 版本。

update-java-alternatives (Debian / Ubuntu / Mint)

这是 Debian/Ubuntu 系统上管理 Java 替代项的官方工具。

安装: 如果你的系统没有这个工具(虽然通常都有),可以安装:

sudo apt update
sudo apt install install-info

使用

  • 列出所有版本

    sudo update-java-alternatives --list
  • 切换到指定版本: 假设你想切换到 java-1.17.0-openjdk-amd64

    # --jre 表示切换 Java 运行时环境
    # --set 指定要设置的版本名称
    sudo update-java-alternatives --set java-1.17.0-openjdk-amd64
  • 验证

    java -version

这个工具会自动更新 /usr/bin/javajavac 等命令的符号链接,并设置好 JAVA_HOME,非常方便。

archlinux-java (Arch Linux)

Arch Linux 使用自己的工具。

  • 列出所有版本

    sudo archlinux-java status
  • 切换到指定版本

    sudo archlinux-java set java-17-openjdk

sdkman! (跨平台,强烈推荐)

sdkman! 是一个命令行工具,用于管理多个软件开发工具包(包括 Java、Kotlin、Gradle、Maven 等),它非常强大、易用,是管理 Java 版本的“瑞士军刀”。

安装: 打开终端,运行以下命令:

curl -s "https://get.sdkman.io" | bash

安装完成后,打开一个新的终端,让它自动加载。

使用

  • 安装多个 Java 版本

    # 安装 OpenJDK 17
    sdk install java 17.0.12-tem
    # 安装 OpenJDK 11
    sdk install java 11.0.21-tem
    # 安装 Oracle JDK 21 (需要接受许可协议)
    sdk install java 21.0.2-tem
  • 列出已安装的 Java 版本

    sdk list java
  • 切换 Java 版本

    # 切换到 Java 17
    sdk use java 17.0.12-tem
    # 切换到 Java 11
    sdk use java 11.0.21-tem
  • 设置默认版本

    sdk default java 17.0.12-tem

sdkman! 的优点是它会自动处理 JAVA_HOMEPATH,无需你手动干预,而且支持在多个版本间无缝切换。


总结与建议

方法 优点 缺点 适用场景
手动切换 无需额外工具,理解底层原理 容易出错,管理多个版本麻烦,需要手动处理 JAVA_HOME 只有一两个 Java 版本,且不常切换的系统。
系统工具 (update-java-alternatives) 官方支持,稳定可靠,自动处理符号链接 仅限特定发行版 Debian/Ubuntu 用户,是官方推荐的方式。
跨平台工具 (sdkman!) 功能最强大,易于安装和管理,支持多版本,自动处理所有环境变量 需要先安装 sdkman! 本身 强烈推荐给所有用户,尤其是需要频繁切换 Java 版本的开发者。

给你的建议:

  • 如果你只是偶尔需要切换版本,并且使用的是 Ubuntu/Debian,直接使用 sudo update-java-alternatives --set <version> 是最简单直接的方法。
  • 如果你是一名开发者,需要在不同项目(如 Java 8, 11, 17, 21)之间频繁切换,或者你使用的是其他发行版(如 CentOS, Fedora, Arch),强烈建议安装 sdkman!,它会彻底简化你的 Java 版本管理工作。
分享:
扫描分享到社交APP
上一篇
下一篇