linux下openjdk与oracle jdk安装核心区别在于:前者通过apt/yum等包管理器一键安装并自动配置,后者需手动下载解压、配置环境变量;两者可共存,依赖update-alternatives实现版本切换,且java_home必须指向jdk根目录。

Linux 下安装 OpenJDK 和 Oracle JDK 的核心区别在于:前者用包管理器一键完成,后者需手动下载、解压并配置环境变量。两者可以共存,关键在于路径管理和版本切换方式不同。
OpenJDK:推荐用系统包管理器安装
这是最省心、最稳定的方式,适用于开发和大多数生产场景。系统会自动注册到 alternatives 系统,并创建 /usr/bin/java 等命令的符号链接,无需手动设 JAVA_HOME(但部分工具仍需要)。
-
Ubuntu/Debian:运行
sudo apt update && sudo apt install -y openjdk-17-jdk -
CentOS/RHEL/Rocky 8+:运行
sudo dnf install -y java-17-openjdk-devel(注意带devel才含javac) -
CentOS 7:用
yum,命令为sudo yum install -y java-17-openjdk-devel - 验证:执行
java -version和javac -version,输出应显示 OpenJDK 17 及构建信息
Oracle JDK:需手动下载与配置
Oracle JDK 不再提供免费商用许可,仅限个人开发或特定场景使用。安装过程不依赖包管理器,所有路径和变量都由你控制,适合多版本并存或明确指定 JDK 路径的场景。
- 从 Oracle 官网下载对应架构的 tar.gz 包(如
jdk-17_linux-x64_bin.tar.gz),注意需登录 Oracle 账户 - 解压到统一目录,例如:
sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /opt/java,解压后路径类似/opt/java/jdk-17.0.x - 配置全局环境变量:编辑
/etc/profile.d/java.sh(推荐)或/etc/profile,写入:export JAVA_HOME=/opt/java/jdk-17.0.x<br>export PATH=$JAVA_HOME/bin:$PATH
- 生效配置:
source /etc/profile.d/java.sh,然后运行java -version验证
让两个 JDK 共存并灵活切换
系统默认只认一个 java 命令,但你可以通过 update-alternatives 统一管理多个 JDK,包括 OpenJDK 和 Oracle JDK。
- 先为 Oracle JDK 手动注册:
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-17.0.x/bin/java 2 - 为 OpenJDK 注册(通常已自动注册,可用
sudo update-alternatives --config java查看) - 运行
sudo update-alternatives --config java,选择编号即可切换默认 JDK -
JAVA_HOME仍建议在/etc/profile.d/java.sh中固定指向你当前主力版本,避免 IDE 或构建工具出错
JAVA_HOME 设置要点
很多 Java 工具(Maven、Tomcat、IDEA)依赖 JAVA_HOME,它必须指向 JDK 根目录(即含 bin 和 lib 的那一层),不是 bin 本身,也不是 jre 子目录。
- 错误示例:
JAVA_HOME=/opt/java/jdk-17.0.x/bin(多了/bin) - 正确示例:
JAVA_HOME=/opt/java/jdk-17.0.x或JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 - 查 OpenJDK 实际路径:运行
readlink -f $(which java),向上退两级就是JAVA_HOME - 设完记得
source配置文件,再检查:echo $JAVA_HOME











