人人都会AI编程

JDK 安装、环境变量配置、多版本管理

更新时间:2026-07-12

在 Linux 上搭建 Java 开发环境,最常遇到的三个任务就是:安装 JDK、正确配置环境变量,以及在需要时切换不同版本。以下步骤基于服务器最常用的两种 JDK 发行版(OpenJDK 和 Oracle JDK),并兼顾长期使用中的多版本共存需求。


1. 安装 JDK

绝大多数 Linux 发行版都通过包管理器提供 OpenJDK,这是最简单可靠的安装方式。

Debian / Ubuntu 系列

# 更新包索引
sudo apt update

# 安装指定版本(以 17 和 21 为例)
sudo apt install openjdk-17-jdk
sudo apt install openjdk-21-jdk

RHEL / CentOS / Fedora 系列

# 安装指定版本
sudo dnf install java-17-openjdk-devel
sudo dnf install java-21-openjdk-devel

如果需要 Oracle JDK(例如商业项目明确要求),可前往 Oracle 官网下载 .tar.gz 压缩包,解压到 /usr/local//opt/ 下:

sudo tar -xzf jdk-21_linux-x64_bin.tar.gz -C /usr/local/

小提示:优先使用发行版自带的 OpenJDK,它完全免费且经充分测试,除极个别遗留系统外几乎不存在兼容性问题。


2. 环境变量配置

Java 工具链通过三个关键环境变量定位 JDK 和运行时:

  • JAVA_HOME —— 指向 JDK 安装根目录,是 Maven、Gradle、Tomcat 等大部分 Java 工具链识别 JDK 位置的标准方式;
  • PATH —— 添加 $JAVA_HOME/bin,让 javajavac 等命令在终端中直接可用;
  • CLASSPATH —— 一般无需设置(现代 Java 应用多由构建工具管理类路径),除非运行特殊的单文件程序。

配置方法:
编辑全局配置文件 /etc/environment(对所有用户生效)或用户自家目录下的 ~/.bashrc~/.profile。推荐在 ~/.bashrc 中追加:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64   # 请根据实际路径调整
export PATH=$JAVA_HOME/bin:$PATH

修改后执行 source ~/.bashrc 或重新登录使其生效。
验证:

echo $JAVA_HOME
java -version
javac -version

如何获取正确的路径?
若不确知安装位置,可使用以下命令查找:

readlink -f $(which java)          # 查看 java 执行文件实际指向
# 或
update-alternatives --list java    # Debian/Ubuntu 系

3. 多版本管理

实际工作中经常需要同时安装多个 JDK 版本(如旧项目用 Java 8,新项目用 Java 17),可按需切换。

方法一:使用系统级 update-alternatives(Debian/Ubuntu)

将已安装的各版本注册到 alternatives 系统中,然后运行交互式选择:

# 注册 java 命令
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2

# 注册 javac 命令
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-21-openjdk-amd64/bin/javac 2

# 切换版本
sudo update-alternatives --config java
sudo update-alternatives --config javac

方法二:手动修改 JAVA_HOME 并配合别名

~/.bashrc 中定义多个别名,手动切换:

alias java17='export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64; export PATH=$JAVA_HOME/bin:$PATH'
alias java21='export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64; export PATH=$JAVA_HOME/bin:$PATH'

使用时执行 java17java21 即可临时切换当前终端会话的版本。

方法三:使用 SDKMAN(推荐开发环境)

SDKMAN 是一个专为 JVM 语言设计的版本管理器,非侵入式、仅影响当前用户:

# 安装 SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

# 查看可安装的 JDK
sdk list java

# 安装并切换版本
sdk install java 17.0.9-tem
sdk use java 17.0.9-tem        # 仅当前 shell 生效
sdk default java 17.0.9-tem    # 设置为永久默认

SDKMAN 会自动处理 JAVA_HOMEPATH,支持 GraalVM、Amazon Corretto、Temurin 等多种发行版,在开发机上最为灵活。


4. 常见问题排查

  • 命令未找到:确认 PATH 包含 $JAVA_HOME/bin,并用 which java 查看实际调用的路径。
  • 版本指认错误:有时 /usr/bin/java 是软链接,指向 alternatives 管理的目标,可用 ls -l /usr/bin/java 查看链接链。
  • IDE 或构建工具仍使用旧版本:很多工具(如 IDE)自身有 JDK 配置选项,不受系统环境变量控制,需在其设置中指定。
  • CLASSPATH 问题:现代开发几乎不需要设置全局 CLASSPATH,若程序报 ClassNotFoundException,应检查项目的依赖或构建脚本,而非修改系统变量。

掌握上述安装、配置与版本管理方法,就足以应对绝大多数 Linux 下的 Java 开发与部署任务。记得优先使用包管理器维护 OpenJDK,需要快速切换时再用 SDKMAN 等工具,保持环境清爽可控。