Ubuntu 24.04 生产环境 Adoptium Temurin JDK 8 安装与配置指南
Ubuntu 24.04 生产环境 Adoptium Temurin JDK 8 安装与配置指南
| 项目 | 说明 |
|---|---|
| 适用系统 | Ubuntu 24.04 LTS |
| Java 版本 | 8(Temurin 8u492) |
| 发行版 | Adoptium Temurin(Eclipse 基金会) |
| 安装路径 | /usr/lib/jvm/temurin-8-jdk-amd64 |
| 包管理 | APT(通过 Adoptium 软件源) |
| 许可证 | GPLv2 + Classpath Exception |
| 推荐场景 | 生产环境(高可靠性、长期支持) |
一、背景说明
1.1 为什么选择 Adoptium Temurin?
Adoptium Temurin 是 Eclipse 基金会维护的 OpenJDK 官方发行版,是生产环境的理想选择:
| 特性 | 说明 |
|---|---|
| 免费开源 | 完全开源,无商业授权限制 |
| 长期支持(LTS) | 提供长期安全更新和 Bug 修复 |
| 质量认证 | 通过 Eclipse AQAvit 质量认证 |
| 更新及时 | 安全补丁快速响应 |
| 社区活跃 | 全球开发者维护,可靠性高 |
1.2 与 Oracle JDK 的对比
| 对比项 | Adoptium Temurin | Oracle JDK |
|---|---|---|
| 许可证 | GPLv2 + Classpath Exception | 商业/OTN |
| 商业使用 | ✅ 免费 | ❌ 需付费(商业用途) |
| 更新来源 | Eclipse 基金会 | Oracle 官方 |
| 生产推荐 | ✅ 推荐 | 特殊需求时使用 |
二、前提条件
- 拥有服务器的 root 权限 或
sudo权限。 - 服务器能够访问互联网(下载 GPG 密钥和软件包)。
- 确保
apt包管理器工作正常。
三、安装步骤
3.1 安装依赖包
sudo apt update
sudo apt install -y wget apt-transport-https gnupg
3.2 添加 Adoptium GPG 密钥
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
3.3 添加 Adoptium 软件源
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
3.4 更新软件包列表
sudo apt update
3.5 安装 Temurin JDK 8
sudo apt install -y temurin-8-jdk
3.6 验证安装
java -version
预期输出:
openjdk version "1.8.0_492"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_492-b09)
OpenJDK 64-Bit Server VM (Temurin)(build 25.492-b09, mixed mode)
检查编译器:
javac -version
预期输出:
javac 1.8.0_492
四、配置 JAVA_HOME 环境变量
4.1 为什么需要配置?
通过 APT 安装的 JDK,系统已自动将 java、javac 命令链接到 /usr/bin,因此终端可直接运行这些命令。但以下场景必须配置 JAVA_HOME:
| 应用类型 | 示例 | 是否需要 JAVA_HOME |
|---|---|---|
终端命令(java -version) |
手动执行 Java 命令 | ❌ 不需要 |
| 应用服务器 | Tomcat、Jetty、WildFly | ✅ 必须 |
| 构建工具 | Maven、Gradle、Ant | ✅ 必须 |
| CI/CD 工具 | Jenkins、GitLab CI | ✅ 必须 |
| 大数据组件 | Kafka、Elasticsearch、Hadoop | ✅ 必须 |
| 监控工具 | JConsole、VisualVM | ✅ 推荐 |
结论:生产环境的 Java 应用几乎都依赖
JAVA_HOME,因此必须配置。
4.2 确认 JDK 安装路径
dirname $(dirname $(readlink -f $(which java)))
输出:/usr/lib/jvm/temurin-8-jdk-amd64
4.3 系统级配置(推荐生产环境)
创建独立的配置文件 /etc/profile.d/jdk.sh,对所有用户生效,便于管理和维护:
sudo tee /etc/profile.d/jdk.sh << 'EOF'
JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
EOF
使配置立即生效:
source /etc/profile
验证配置:
echo $JAVA_HOME
预期输出:/usr/lib/jvm/temurin-8-jdk-amd64
五、中文字体支持(Graphics2D 生成图片必备)
5.1 为什么需要中文字体?
Java 应用程序通过 Graphics2D 生成图片(如验证码、图表、水印等)时,文本渲染依赖于系统字体库。如果服务器未安装中文字体,绘制中文时会显示为方块(□) 或空白,严重影响业务功能。
前置检查:Java 编码环境是否正常(影响文件读写和字符串处理)。
java -XshowSettings:properties -version 2>&1 | grep "file.encoding"
若输出 file.encoding = UTF-8,则表示编码环境正常。但编码正常 ≠ 字体已安装,需按以下步骤安装和验证中文字体。
5.2 安装中文字体包
Ubuntu 24.04 提供了多个开源中文字体,推荐安装 文泉驿 系列(免费开源,许可友好):
sudo apt update
sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei
| 字体包 | 描述 | 许可证 |
|---|---|---|
fonts-wqy-zenhei |
文泉驿正黑体(黑体风格) | GPL-2.0 WITH Font-exception |
fonts-wqy-microhei |
文泉驿微米黑(更细黑体) | Apache-2.0 OR GPL-3.0 WITH Font-exception |
可选安装:如果需要更全的 CJK 字体,可安装 Google Noto 字体:
sudo apt install -y fonts-noto-cjk
5.3 验证字体安装
安装完成后,使用 fc-list 命令查看系统中所有已安装的字体,并过滤中文:
fc-list :lang=zh
预期输出应包含:
/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei:style=Regular
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei:style=Regular
如果 fc-list 命令不存在,请先安装 fontconfig:
sudo apt install -y fontconfig
六、管理多个 Java 版本
如果系统同时存在多个 JDK 版本,可使用 update-alternatives 管理。
6.1 查看所有已安装的 Java 版本
sudo update-alternatives --list java
6.2 交互式切换默认版本
sudo update-alternatives --config java
6.3 命令行直接切换
sudo update-alternatives --set java /usr/lib/jvm/temurin-8-jdk-amd64/jre/bin/java
七、生产环境最佳实践
7.1 JVM 性能调优
在生产环境中,建议在应用启动脚本中添加 JVM 参数。以下是一组常用配置:
JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log"
| 参数 | 说明 |
|---|---|
-Xms2g -Xmx4g |
初始和最大堆内存(根据服务器内存调整) |
-XX:+UseG1GC |
使用 G1 垃圾回收器(适用于大堆内存) |
-XX:+PrintGCDetails |
打印 GC 详细信息 |
-Xloggc:/var/log/app/gc.log |
指定 GC 日志路径 |
7.2 最小权限原则
Java 应用程序应使用专用系统用户运行,避免使用 root:
# 创建专用用户
sudo useradd -r -s /sbin/nologin myapp
# 设置应用目录权限
sudo chown -R myapp:myapp /opt/myapp
sudo chmod -R 750 /opt/myapp
7.3 安全更新
定期更新 JDK 以获取安全补丁:
# 更新软件包列表
sudo apt update
# 仅更新 Temurin JDK
sudo apt upgrade -y temurin-8-jdk
# 验证更新后的版本
java -version
7.4 安全加固建议
| 加固项 | 说明 |
|---|---|
| 禁用 JMX 远程管理 | 如非必要,关闭 JMX 远程端口 |
| 限制网络访问 | 使用防火墙限制 Java 应用的监听端口 |
| 禁用不安全协议 | 在 Java 安全配置中禁用 SSLv3、TLSv1.0 等 |
| 定期日志审查 | 监控 GC 日志和应用日志,及时发现异常 |
八、验证部署
8.1 基础验证清单
# 1. Java 版本
java -version
# 2. 编译器版本
javac -version
# 3. JAVA_HOME 变量
echo $JAVA_HOME
# 4. JDK 安装路径
ls -la /usr/lib/jvm/temurin-8-jdk-amd64
# 5. 查看完整 JDK 配置
java -XshowSettings:properties -version
# 6. 中文字体验证
fc-list :lang=zh
8.2 Graphics2D 字体渲染测试(生产环境关键验证)
以下测试将生成一张包含中文、英文、数字的 PNG 图片,使用系统常规字体渲染,用于验证 Java 图形环境能否正确渲染多语言文本。请按顺序执行。
步骤 1:创建测试文件 FontTest.java
cat > FontTest.java << 'EOF'
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
public class FontTest {
public static void main(String[] args) throws Exception {
int width = 600;
int height = 300;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
// 设置背景为白色
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
// 使用系统常规字体(普通样式,非加粗)
Font font = new Font("WenQuanYi Micro Hei", Font.PLAIN, 42);
g2d.setFont(font);
g2d.setColor(Color.BLACK);
// 绘制混合内容:中文 + 英文 + 数字
g2d.drawString("你好 World 2026", 50, 120);
// 换一种字体样式展示(同一字体,不同大小)
Font smallFont = new Font("WenQuanYi Micro Hei", Font.PLAIN, 28);
g2d.setFont(smallFont);
g2d.drawString("中文 English 1234567890", 50, 200);
// 再展示一种不同风格的字体(Zen Hei)
Font zenFont = new Font("WenQuanYi Zen Hei", Font.PLAIN, 36);
g2d.setFont(zenFont);
g2d.drawString("文泉驿正黑 | Zen Hei | 2026", 50, 260);
g2d.dispose();
File output = new File("font-test.png");
ImageIO.write(image, "png", output);
System.out.println("测试图片已生成: " + output.getAbsolutePath());
System.out.println("请下载并打开 font-test.png,检查以下内容是否显示正常:");
System.out.println(" - 第1行:你好 World 2026");
System.out.println(" - 第2行:中文 English 1234567890");
System.out.println(" - 第3行:文泉驿正黑 | Zen Hei | 2026");
System.out.println("");
System.out.println("如果所有文字显示清晰且无方块,则中文字体配置正确。");
}
}
EOF
步骤 2:编译测试程序
javac FontTest.java
步骤 3:运行测试程序
java FontTest
预期输出:
测试图片已生成: /path/to/font-test.png
请下载并打开 font-test.png,检查以下内容是否显示正常:
- 第1行:你好 World 2026
- 第2行:中文 English 1234567890
- 第3行:文泉驿正黑 | Zen Hei | 2026
如果所有文字显示清晰且无方块,则中文字体配置正确。
步骤 4:验证图片内容
将生成的 font-test.png 下载到本地并打开,检查图片中三行文字是否正确显示:
| 行 | 内容 | 验证要点 |
|---|---|---|
| 1 | 你好 World 2026 |
中文 + 英文 + 数字混合显示 |
| 2 | 中文 English 1234567890 |
中文 + 英文 + 数字,不同字号 |
| 3 | 文泉驿正黑 | Zen Hei | 2026 |
不同字体(正黑体)显示 |
判断标准:
- ✅ 通过:所有文字清晰显示,中文无方块,英文和数字正常。
- ❌ 失败:任何一行出现方块(
□)或空白 → 检查中文字体是否已安装(参考 5.3 节),安装后重新运行测试。
步骤 5:清理测试文件(可选)
rm -f FontTest.java FontTest.class font-test.png
九、完整安装脚本
以下是一键安装脚本(可保存为 install-java8.sh):
#!/bin/bash
set -e
echo "=== 开始安装 Adoptium Temurin JDK 8 ==="
# 1. 安装依赖
echo "安装依赖..."
sudo apt update
sudo apt install -y wget apt-transport-https gnupg
# 2. 添加 GPG 密钥
echo "添加 Adoptium GPG 密钥..."
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
# 3. 添加软件源
echo "添加 Adoptium 软件源..."
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
# 4. 更新并安装
echo "更新软件包列表..."
sudo apt update
echo "安装 Temurin JDK 8..."
sudo apt install -y temurin-8-jdk
# 5. 安装中文字体(必须,否则Graphics2D生成中文会出问题)
echo "安装中文字体..."
sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei fontconfig
# 6. 配置 JAVA_HOME
echo "配置 JAVA_HOME..."
sudo tee /etc/profile.d/jdk.sh << 'EOF'
export JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
echo "=== 安装完成 ==="
echo "JAVA_HOME: $JAVA_HOME"
echo "请执行 'source /etc/profile' 使环境变量生效"
运行脚本:
chmod +x install-java8.sh
./install-java8.sh
十、常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
add-apt-repository: command not found |
缺少软件源管理工具 | sudo apt install -y software-properties-common |
gpg: command not found |
缺少 gnupg 工具 | sudo apt install -y gnupg |
Unable to locate package temurin-8-jdk |
软件源未正确添加 | 重新执行 3.2 和 3.3 步骤,确认 sudo apt update 无报错 |
java: command not found |
JAVA_HOME 未配置或 PATH 未包含 | 检查 echo $JAVA_HOME 和 echo $PATH |
javac: command not found |
只安装了 JRE 未安装 JDK | 确认安装的是 temurin-8-jdk 而非 temurin-8-jre |
| 多个 Java 版本冲突 | 系统存在多个 JDK | 使用 update-alternatives --config java 切换 |
应用启动报错 JAVA_HOME not found |
环境变量未配置 | 按第四节配置 JAVA_HOME |
| Graphics2D 中文显示方块 | 系统缺少中文字体 | 按第五节安装中文字体,并执行 8.2 节测试验证 |
fc-list: command not found |
系统未安装 fontconfig | sudo apt install -y fontconfig |
十一、安装信息汇总
| 项目 | 值 |
|---|---|
| Java 版本 | 8u492 |
| JDK 包名 | temurin-8-jdk |
| 安装路径 | /usr/lib/jvm/temurin-8-jdk-amd64 |
| JAVA_HOME | /usr/lib/jvm/temurin-8-jdk-amd64 |
| 可执行文件 | /usr/lib/jvm/temurin-8-jdk-amd64/bin/java |
| 环境变量文件 | /etc/profile.d/jdk.sh |
| 中文字体包 | fonts-wqy-zenhei, fonts-wqy-microhei |
| 更新命令 | sudo apt update && sudo apt upgrade -y temurin-8-jdk |
| 许可证 | GPLv2 + Classpath Exception |
附录:常用命令速查
| 操作 | 命令 |
|---|---|
| 查看 Java 版本 | java -version |
| 查看编译器版本 | javac -version |
| 查看 JAVA_HOME | echo $JAVA_HOME |
| 查看所有 Java 版本 | sudo update-alternatives --list java |
| 切换默认 Java | sudo update-alternatives --config java |
| 查看 JDK 安装路径 | sudo update-alternatives --display java |
| 查看完整 JDK 信息 | java -XshowSettings:properties -version |
| 更新 JDK | sudo apt upgrade -y temurin-8-jdk |
| 查看当前使用的 Java | which java |
| 验证中文字体 | fc-list :lang=zh |
文档版本:2.2
适用系统:Ubuntu 24.04 LTS
Java 版本:Adoptium Temurin 8u492
最后更新:2026-07-17
更多推荐




所有评论(0)