在 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,让java、javac等命令在终端中直接可用;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'
使用时执行 java17 或 java21 即可临时切换当前终端会话的版本。
方法三:使用 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_HOME 和 PATH,支持 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 等工具,保持环境清爽可控。