跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Linux JDK 安装与配置指南:多版本部署方案

详细介绍在 Linux 系统中安装和配置 JDK 的多种方法,涵盖 APT/YUM 包管理器安装及手动部署方案。内容包括 OpenJDK 与 Oracle JDK 的选择建议、环境变量配置、多版本管理与切换、JVM 性能优化参数设置以及常见故障排查技巧,旨在帮助开发者和运维人员快速搭建稳定可靠的 Java 运行环境。

GRACE Grace发布于 2026/3/21更新于 2026/9/277 浏览
Linux JDK 安装与配置指南:多版本部署方案

前言

Java 作为企业级应用的主流开发语言,在 Linux 环境中安装配置 JDK(Java Development Kit)是每个后端开发者、运维工程师的必备技能。本文将详细对比 OpenJDK 与 Oracle JDK,提供 APT/YUM 包管理、手动安装、多版本管理三种主流安装方案,涵盖环境变量配置、版本切换、性能调优等实战技巧,助你快速搭建稳定的 Java 运行环境。

一、安装前准备:选择合适的 JDK

1. 版本选择建议

版本类型特点适用场景
OpenJDK 11开源免费LTS 长期支持,企业主流生产环境首选
OpenJDK 17开源免费最新 LTS 版本,性能优化新项目开发
OpenJDK 8开源免费经典稳定,生态成熟旧系统维护
Oracle JDK商业授权官方版本,功能完整商业项目

2. 系统环境检查

# 查看系统信息
cat /etc/os-release
uname -m # x86_64(64 位)或 i686(32 位)

# 检查现有 Java 版本
java -version 2>/dev/null || echo "未安装 Java"
which java # 查看安装位置

# 清理旧版本(如需)
sudo apt remove --purge openjdk-* # Ubuntu
sudo yum remove java-* # CentOS

二、方法一:APT 包管理器安装(Ubuntu/Debian)

1. 安装 OpenJDK 11(推荐生产环境)

# 更新包列表
sudo apt update

# 安装 OpenJDK 11
sudo apt install openjdk-11-jdk -y

# 安装完整版(包含源码和文档)
sudo apt install openjdk-11-jdk openjdk-11-source -y

2. 安装 OpenJDK 17(最新 LTS)

# Ubuntu 22.04+默认包含 JDK 17
sudo apt install openjdk-17-jdk -y

# 早期版本需添加仓库
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt update
sudo apt install openjdk-17-jdk -y

3. 安装 OpenJDK 8(兼容旧项目)

sudo apt install openjdk-8-jdk -y

# 如果找不到包,先更新仓库
sudo add-apt-repository ppa:openjdk-r/ppa -y
sudo apt update
sudo apt install openjdk-8-jdk -y

4. 安装 Oracle JDK(需官网同意协议)

# 添加 Oracle JDK 仓库
sudo add-apt-repository ppa:linuxuprising/java -y
sudo apt update

# 安装 Oracle JDK 17
sudo apt install oracle-java17-installer -y

# 安装时会提示接受许可协议

三、方法二:YUM/DNF 包管理器安装(CentOS/RHEL)

1. CentOS 8/RHEL 8 安装 OpenJDK

# 查看可用的 JDK 版本
dnf search openjdk

# 安装 OpenJDK 11
sudo dnf install java-11-openjdk java-11-openjdk-devel -y

# 安装 OpenJDK 17
sudo dnf install java-17-openjdk java-17-openjdk-devel -y

# 安装 OpenJDK 8
sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

2. CentOS 7 安装 OpenJDK

# 启用 EPEL 仓库(可选)
sudo yum install epel-release -y

# 安装 OpenJDK 11
sudo yum install java-11-openjdk java-11-openjdk-devel -y

# 或安装 OpenJDK 8
sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

3. 安装 Oracle JDK(CentOS)

# 下载 Oracle JDK RPM 包
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm

# 安装 RPM 包
sudo rpm -ivh jdk-17_linux-x64_bin.rpm

# 或使用 yum 安装本地 RPM(自动处理依赖)
sudo yum localinstall jdk-17_linux-x64_bin.rpm

四、方法三:手动安装(任意 Linux 发行版)

1. 下载 JDK 安装包

# 创建安装目录
sudo mkdir -p /usr/lib/jvm
cd /usr/lib/jvm

# 下载 OpenJDK(以 17 为例)
# 从 Adoptium 下载(原 AdoptOpenJDK)
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gz

# 或从 Oracle 官网下载(需登录)
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

2. 解压与安装

# 解压下载的压缩包
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8_7.tar.gz

# 重命名目录(可选)
sudo mv jdk-17.0.8+7 jdk-17

# 设置目录权限
sudo chown -R root:root /usr/lib/jvm/jdk-17

3. 配置环境变量

# 方法 A:修改/etc/profile(系统全局)
sudo nano /etc/profile

# 在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/jdk-17
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre:$JAVA_HOME/lib
export PATH=$JRE_HOME/lib:$PATH
export PATH=$JAVA_HOME/bin:$PATH

# 使配置生效
source /etc/profile
# 方法 B:修改用户级配置(/.bashrc 或/.zshrc)
echo 'export JAVA_HOME=/usr/lib/jvm/jdk-17' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

4. 配置替代系统(update-alternatives)

# 配置 java 命令
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 1
sudo update-alternatives --config java # 选择版本

# 配置 javac 编译器
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 1
sudo update-alternatives --config javac

# 配置 jar 打包工具
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk-17/bin/jar 1

五、多版本 JDK 管理与切换

1. 查看已安装的 JDK 版本

# 查看 update-alternatives 配置
sudo update-alternatives --display java

# 查看所有 Java 安装
ls -la /usr/lib/jvm/

# 查看当前使用的 Java 版本
java -version
which java

2. 切换默认 JDK 版本

# 交互式切换
sudo update-alternatives --config java

# 输出示例:
# 有 3 个候选项可用于替换 java (提供 /usr/bin/java)。
#
#   选择    优先级  状态
# --------------------------------------------------
# * 0       /usr/lib/jvm/jdk-17/bin/java  1     自动模式
#   1       /usr/lib/jvm/jdk-11/bin/java  2     手动模式
#   2       /usr/lib/jvm/jdk-8/bin/java   3     手动模式
#
# 要维持当前值 [*] 请按<回车键>,或者键入选择的编号:2

3. 临时切换版本(仅当前会话)

# 临时使用 JDK 11
export JAVA_HOME=/usr/lib/jvm/jdk-11
export PATH=$JAVA_HOME/bin:$PATH

# 验证
java -version

六、环境变量配置详解

1. JAVA_HOME 标准配置

# 检测 JAVA_HOME 是否设置
echo $JAVA_HOME

# 如果没有 JAVA_HOME,自动查找设置
if [ -z "$JAVA_HOME" ]; then
    # 查找 java 命令位置
    JAVA_PATH=$(which java)
    if [ -n "$JAVA_PATH" ]; then
        # 解析 JAVA_HOME
        export JAVA_HOME=$(dirname $(dirname $(readlink -f $JAVA_PATH)))
    fi
fi

2. 完整环境变量配置示例

# ~/.bashrc 或/etc/profile 中添加:

# Java 环境配置
export JAVA_8_HOME=/usr/lib/jvm/jdk-8
export JAVA_11_HOME=/usr/lib/jvm/jdk-11
export JAVA_17_HOME=/usr/lib/jvm/jdk-17

# 设置默认 JDK
export JAVA_HOME=$JAVA_11_HOME

# 添加 PATH
export PATH=$JAVA_HOME/bin:$PATH

# 类路径配置
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# JVM 参数(可选)
export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseG1GC -Dfile.encoding=UTF-8"

3. 配置生效检查

# 重新加载配置
source ~/.bashrc

# 或
source /etc/profile

# 验证配置
echo $JAVA_HOME
echo $PATH | grep java

七、验证安装与测试

1. 基础验证命令

# 验证 Java 安装
java -version
# 期望输出包含:openjdk version "17.0.8" 2023-07-18

# 验证编译器
javac -version

# 验证完整安装
which java
which javac
which jar

2. 编写测试程序

# 创建测试文件
cat > HelloWorld.java << 'EOF'
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Java 安装成功!");
        System.out.println("Java 版本:" + System.getProperty("java.version"));
        System.out.println("JAVA_HOME:" + System.getProperty("java.home"));
    }
}
EOF

# 编译运行
javac HelloWorld.java
java HelloWorld

3. 高级验证

# 查看详细系统属性
java -XshowSettings:properties -version 2>&1 | grep -A 10 "java.home"

# 检查 JVM 内存
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i heapsize

# 验证 JAVA_HOME 是否正确
$JAVA_HOME/bin/java -version

八、性能优化配置

1. JVM 内存参数调整

# 生产环境推荐配置(8GB 内存服务器)
export JAVA_OPTS="-Xms4g -Xmx6g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2"

# 开发环境配置
export JAVA_OPTS="-Xms512m -Xmx2g -XX:+UseParallelGC"

# Tomcat 配置示例(catalina.sh 中添加)
JAVA_OPTS="$JAVA_OPTS -server -Xmx2048m -Xms1024m -XX:MaxPermSize=256m"

2. 设置默认字符集

# 避免中文乱码
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

# 或
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

3. 时区配置

# 设置 JVM 时区为上海
export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"

九、故障排除指南

1. 常见错误解决

# 错误 1:command not found: java
# 解决:检查 PATH 配置,确保$JAVA_HOME/bin 在 PATH 中

# 错误 2:java.lang.UnsupportedClassVersionError
# 解决:JDK 版本不兼容,使用正确的 JDK 版本编译和运行

# 错误 3:bash: /usr/bin/java: No such file or directory
# 解决:update-alternatives 配置错误,重新配置

# 错误 4:权限不足
# 解决:使用 sudo 或检查文件权限
sudo chmod -R 755 /usr/lib/jvm/jdk-*/

2. 环境变量调试

# 查看所有环境变量
env | grep -i java

# 查看命令解析路径
type java
which -a java # 显示所有 java 命令位置

# 检查符号链接
ls -la /usr/bin/java
ls -la /etc/alternatives/java

3. 多版本冲突解决

# 清除错误配置
sudo update-alternatives --remove-all java
sudo update-alternatives --remove-all javac

# 重新配置
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-11/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-11/bin/javac 1

十、生产环境最佳实践

1. 安装验证清单

  • 基础检查:
    • java -version 正确显示版本
    • javac -version 编译器正常
    • echo $JAVA_HOME 路径正确
  • 环境配置:
    • PATH 包含 $JAVA_HOME/bin
    • JAVA_HOME 指向正确 JDK 目录
    • update-alternatives 配置正确
  • 权限与安全:
    • JDK 目录权限为 755
    • 使用专用用户运行 Java 应用
    • 定期更新安全补丁

2. 自动化安装脚本示例

#!/bin/bash

# auto_install_jdk.sh - JDK 自动安装脚本
JDK_VERSION="11"
INSTALL_DIR="/opt/jdk"

echo "开始安装 OpenJDK ${JDK_VERSION}…"

# 根据系统选择安装方式
if [ -f /etc/debian_version ]; then
    # Ubuntu/Debian
    sudo apt update
    sudo apt install openjdk-${JDK_VERSION}-jdk -y
elif [ -f /etc/redhat-release ]; then
    # CentOS/RHEL
    sudo yum install java-${JDK_VERSION}-openjdk-devel -y
else
    echo "不支持的系统,请手动安装"
    exit 1
fi

# 配置环境变量
echo "export JAVA_HOME=/usr/lib/jvm/java-${JDK_VERSION}-openjdk-amd64" >> ~/.bashrc
echo "export PATH=$JAVA_HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

echo "安装完成!"
java -version

3. 监控与维护

# 查看 Java 进程
jps -l # 查看所有 Java 进程

# 监控 JVM 状态
jstat -gc 1000 # 每秒监控 GC 情况

# 堆转储分析(调试内存泄漏)
jmap -dump:live,format=b,file=heap.bin

# 线程分析
jstack > thread_dump.txt

安装方法选择建议

  • 快速选择指南:
    • 新手/开发环境 → 包管理器安装(apt install openjdk-11-jdk)
    • 生产环境 → 手动安装 + 环境变量配置
    • 多项目开发 → 多版本管理(SDKMAN 或手动配置)
    • 容器环境 → 使用官方 Docker 镜像(docker pull openjdk:11-jdk)

版本选择建议

  • 企业生产:OpenJDK 11 LTS(稳定优先)
  • 新项目开发:OpenJDK 17 LTS(功能最新)
  • 旧系统维护:OpenJDK 8(兼容性优先)
  • 商业项目:Oracle JDK(官方支持)

性能优化提示

  • 根据应用类型调整 JVM 内存参数
  • 启用合适的垃圾收集器(G1GC 推荐)
  • 设置正确的字符集和时区
  • 定期更新 JDK 安全补丁

最后提醒

  • 生产环境务必使用 LTS 版本
  • 配置完成后验证 java -version
  • 定期备份环境变量配置
  • 使用工具监控 JVM 运行状态

目录

  1. 前言
  2. 一、安装前准备:选择合适的 JDK
  3. 1. 版本选择建议
  4. 2. 系统环境检查
  5. 查看系统信息
  6. 检查现有 Java 版本
  7. 清理旧版本(如需)
  8. 二、方法一:APT 包管理器安装(Ubuntu/Debian)
  9. 1. 安装 OpenJDK 11(推荐生产环境)
  10. 更新包列表
  11. 安装 OpenJDK 11
  12. 安装完整版(包含源码和文档)
  13. 2. 安装 OpenJDK 17(最新 LTS)
  14. Ubuntu 22.04+默认包含 JDK 17
  15. 早期版本需添加仓库
  16. 3. 安装 OpenJDK 8(兼容旧项目)
  17. 如果找不到包,先更新仓库
  18. 4. 安装 Oracle JDK(需官网同意协议)
  19. 添加 Oracle JDK 仓库
  20. 安装 Oracle JDK 17
  21. 安装时会提示接受许可协议
  22. 三、方法二:YUM/DNF 包管理器安装(CentOS/RHEL)
  23. 1. CentOS 8/RHEL 8 安装 OpenJDK
  24. 查看可用的 JDK 版本
  25. 安装 OpenJDK 11
  26. 安装 OpenJDK 17
  27. 安装 OpenJDK 8
  28. 2. CentOS 7 安装 OpenJDK
  29. 启用 EPEL 仓库(可选)
  30. 安装 OpenJDK 11
  31. 或安装 OpenJDK 8
  32. 3. 安装 Oracle JDK(CentOS)
  33. 下载 Oracle JDK RPM 包
  34. 安装 RPM 包
  35. 或使用 yum 安装本地 RPM(自动处理依赖)
  36. 四、方法三:手动安装(任意 Linux 发行版)
  37. 1. 下载 JDK 安装包
  38. 创建安装目录
  39. 下载 OpenJDK(以 17 为例)
  40. 从 Adoptium 下载(原 AdoptOpenJDK)
  41. 或从 Oracle 官网下载(需登录)
  42. wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17linux-x64bin.tar.gz
  43. 2. 解压与安装
  44. 解压下载的压缩包
  45. 重命名目录(可选)
  46. 设置目录权限
  47. 3. 配置环境变量
  48. 方法 A:修改/etc/profile(系统全局)
  49. 在文件末尾添加:
  50. 使配置生效
  51. 方法 B:修改用户级配置(/.bashrc 或/.zshrc)
  52. 4. 配置替代系统(update-alternatives)
  53. 配置 java 命令
  54. 配置 javac 编译器
  55. 配置 jar 打包工具
  56. 五、多版本 JDK 管理与切换
  57. 1. 查看已安装的 JDK 版本
  58. 查看 update-alternatives 配置
  59. 查看所有 Java 安装
  60. 查看当前使用的 Java 版本
  61. 2. 切换默认 JDK 版本
  62. 交互式切换
  63. 输出示例:
  64. 有 3 个候选项可用于替换 java (提供 /usr/bin/java)。
  65. 选择 优先级 状态
  66. --------------------------------------------------
  67. * 0 /usr/lib/jvm/jdk-17/bin/java 1 自动模式
  68. 1 /usr/lib/jvm/jdk-11/bin/java 2 手动模式
  69. 2 /usr/lib/jvm/jdk-8/bin/java 3 手动模式
  70. 要维持当前值 [*] 请按<回车键>,或者键入选择的编号:2
  71. 3. 临时切换版本(仅当前会话)
  72. 临时使用 JDK 11
  73. 验证
  74. 六、环境变量配置详解
  75. 1. JAVA_HOME 标准配置
  76. 检测 JAVA_HOME 是否设置
  77. 如果没有 JAVA_HOME,自动查找设置
  78. 2. 完整环境变量配置示例
  79. ~/.bashrc 或/etc/profile 中添加:
  80. Java 环境配置
  81. 设置默认 JDK
  82. 添加 PATH
  83. 类路径配置
  84. JVM 参数(可选)
  85. 3. 配置生效检查
  86. 重新加载配置
  87. 或
  88. 验证配置
  89. 七、验证安装与测试
  90. 1. 基础验证命令
  91. 验证 Java 安装
  92. 期望输出包含:openjdk version "17.0.8" 2023-07-18
  93. 验证编译器
  94. 验证完整安装
  95. 2. 编写测试程序
  96. 创建测试文件
  97. 编译运行
  98. 3. 高级验证
  99. 查看详细系统属性
  100. 检查 JVM 内存
  101. 验证 JAVA_HOME 是否正确
  102. 八、性能优化配置
  103. 1. JVM 内存参数调整
  104. 生产环境推荐配置(8GB 内存服务器)
  105. 开发环境配置
  106. Tomcat 配置示例(catalina.sh 中添加)
  107. 2. 设置默认字符集
  108. 避免中文乱码
  109. 或
  110. 3. 时区配置
  111. 设置 JVM 时区为上海
  112. 九、故障排除指南
  113. 1. 常见错误解决
  114. 错误 1:command not found: java
  115. 解决:检查 PATH 配置,确保$JAVA_HOME/bin 在 PATH 中
  116. 错误 2:java.lang.UnsupportedClassVersionError
  117. 解决:JDK 版本不兼容,使用正确的 JDK 版本编译和运行
  118. 错误 3:bash: /usr/bin/java: No such file or directory
  119. 解决:update-alternatives 配置错误,重新配置
  120. 错误 4:权限不足
  121. 解决:使用 sudo 或检查文件权限
  122. 2. 环境变量调试
  123. 查看所有环境变量
  124. 查看命令解析路径
  125. 检查符号链接
  126. 3. 多版本冲突解决
  127. 清除错误配置
  128. 重新配置
  129. 十、生产环境最佳实践
  130. 1. 安装验证清单
  131. 2. 自动化安装脚本示例
  132. autoinstalljdk.sh - JDK 自动安装脚本
  133. 根据系统选择安装方式
  134. 配置环境变量
  135. 3. 监控与维护
  136. 查看 Java 进程
  137. 监控 JVM 状态
  138. 堆转储分析(调试内存泄漏)
  139. 线程分析
  140. 安装方法选择建议
  141. 版本选择建议
  142. 性能优化提示
  143. 最后提醒

更多推荐文章

查看全部
  • C++分布式任务调度核心算法与高效负载均衡技术
  • YOLO 结合大模型的多场景智能检测系统架构与实践
  • 基于 YOLO 与大模型的无人机河道智能巡检系统设计与实现
  • 基于 CodeBuddy Code 与腾讯混元开发 AI 识菜通应用
  • 基于深度学习的无人机洪水灾害图像分割与水量估算
  • 解决 VSCode Remote-SSH 远程 Linux 代理配置报错问题
  • 基于深度学习的无人机航拍小目标检测算法研究
  • Linux 文件权限详解:类型、访问者及操作指令
  • Tomcat 8.5 安装与环境配置
  • 基于 Rust 实现 GitHub Trending 热门仓库爬虫
  • Meta Quest 一体机 SideQuest 安装 APK 及 OBB 数据包教程
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • 基于 React 前端和 Node.js 后端的实时聊天应用
  • 数据结构:外部排序原理与优化方法
  • 基于强化学习Q-learning算法的无人机三维路径规划算法原理与实现,MATLAB代码
  • 基于强化学习Q-learning的无人机三维路径规划原理与MATLAB实现
  • 基于 Q-learning 的无人机三维路径规划算法原理与 MATLAB 实现
  • 如何利用 AI 自动生成自动化脚本
  • MySQL 表基础语法:增删查改核心技巧
  • ES6 核心语法进阶:进制表示、Symbol 及类继承

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online