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,系统已自动将 javajavac 命令链接到 /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_HOMEecho $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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐