Ubuntu 24.04 生产环境 Adoptium Temurin JDK 8 安装与配置指南
Ubuntu 24.04 生产环境 Adoptium Temurin JDK 8 安装与配置指南项目说明适用系统Ubuntu 24.04 LTSJava 版本8Temurin 8u492发行版Adoptium TemurinEclipse 基金会安装路径/usr/lib/jvm/temurin-8-jdk-amd64包管理APT通过 Adoptium 软件源许可证GPLv2 Classpath Exception推荐场景生产环境高可靠性、长期支持一、背景说明1.1 为什么选择 Adoptium TemurinAdoptium Temurin 是 Eclipse 基金会维护的 OpenJDK 官方发行版是生产环境的理想选择特性说明免费开源完全开源无商业授权限制长期支持LTS提供长期安全更新和 Bug 修复质量认证通过 Eclipse AQAvit 质量认证更新及时安全补丁快速响应社区活跃全球开发者维护可靠性高1.2 与 Oracle JDK 的对比对比项Adoptium TemurinOracle JDK许可证GPLv2 Classpath Exception商业/OTN商业使用✅ 免费❌ 需付费商业用途更新来源Eclipse 基金会Oracle 官方生产推荐✅推荐特殊需求时使用二、前提条件拥有服务器的root 权限或sudo权限。服务器能够访问互联网下载 GPG 密钥和软件包。确保apt包管理器工作正常。三、安装步骤3.1 安装依赖包sudoaptupdatesudoaptinstall-ywgetapt-transport-https gnupg3.2 添加 Adoptium GPG 密钥wget-O- https://packages.adoptium.net/artifactory/api/gpg/key/public|sudogpg--dearmor-o/usr/share/keyrings/adoptium.gpg3.3 添加 Adoptium 软件源echodeb [signed-by/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb$(awk-F/^VERSION_CODENAME/{print$2}/etc/os-release)main|sudotee/etc/apt/sources.list.d/adoptium.list3.4 更新软件包列表sudoaptupdate3.5 安装 Temurin JDK 8sudoaptinstall-ytemurin-8-jdk3.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$(whichjava)))输出/usr/lib/jvm/temurin-8-jdk-amd644.3 系统级配置推荐生产环境创建独立的配置文件/etc/profile.d/jdk.sh对所有用户生效便于管理和维护sudotee/etc/profile.d/jdk.shEOF 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-version21|grepfile.encoding若输出file.encoding UTF-8则表示编码环境正常。但编码正常 ≠ 字体已安装需按以下步骤安装和验证中文字体。5.2 安装中文字体包Ubuntu 24.04 提供了多个开源中文字体推荐安装文泉驿系列免费开源许可友好sudoaptupdatesudoaptinstall-yfonts-wqy-zenhei fonts-wqy-microhei字体包描述许可证fonts-wqy-zenhei文泉驿正黑体黑体风格GPL-2.0 WITH Font-exceptionfonts-wqy-microhei文泉驿微米黑更细黑体Apache-2.0 OR GPL-3.0 WITH Font-exception可选安装如果需要更全的 CJK 字体可安装 Google Noto 字体sudoaptinstall-yfonts-noto-cjk5.3 验证字体安装安装完成后使用fc-list命令查看系统中所有已安装的字体并过滤中文fc-list :langzh预期输出应包含/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc: WenQuanYi Zen Hei:styleRegular /usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei:styleRegular如果fc-list命令不存在请先安装fontconfigsudoaptinstall-yfontconfig六、管理多个 Java 版本如果系统同时存在多个 JDK 版本可使用update-alternatives管理。6.1 查看所有已安装的 Java 版本sudoupdate-alternatives--listjava6.2 交互式切换默认版本sudoupdate-alternatives--configjava6.3 命令行直接切换sudoupdate-alternatives--setjava/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# 创建专用用户sudouseradd-r-s/sbin/nologin myapp# 设置应用目录权限sudochown-Rmyapp:myapp /opt/myappsudochmod-R750/opt/myapp7.3 安全更新定期更新 JDK 以获取安全补丁# 更新软件包列表sudoaptupdate# 仅更新 Temurin JDKsudoaptupgrade-ytemurin-8-jdk# 验证更新后的版本java-version7.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 :langzh8.2 Graphics2D 字体渲染测试生产环境关键验证以下测试将生成一张包含中文、英文、数字的 PNG 图片使用系统常规字体渲染用于验证 Java 图形环境能否正确渲染多语言文本。请按顺序执行。步骤 1创建测试文件FontTest.javacatFontTest.javaEOF 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运行测试程序javaFontTest预期输出测试图片已生成: /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-fFontTest.java FontTest.class font-test.png九、完整安装脚本以下是一键安装脚本可保存为install-java8.sh#!/bin/bashset-eecho 开始安装 Adoptium Temurin JDK 8 # 1. 安装依赖echo安装依赖...sudoaptupdatesudoaptinstall-ywgetapt-transport-https gnupg# 2. 添加 GPG 密钥echo添加 Adoptium GPG 密钥...wget-O- https://packages.adoptium.net/artifactory/api/gpg/key/public|sudogpg--dearmor-o/usr/share/keyrings/adoptium.gpg# 3. 添加软件源echo添加 Adoptium 软件源...echodeb [signed-by/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb$(awk-F/^VERSION_CODENAME/{print$2}/etc/os-release)main|sudotee/etc/apt/sources.list.d/adoptium.list# 4. 更新并安装echo更新软件包列表...sudoaptupdateecho安装 Temurin JDK 8...sudoaptinstall-ytemurin-8-jdk# 5. 安装中文字体必须否则Graphics2D生成中文会出问题echo安装中文字体...sudoaptinstall-yfonts-wqy-zenhei fonts-wqy-microhei fontconfig# 6. 配置 JAVA_HOMEecho配置 JAVA_HOME...sudotee/etc/profile.d/jdk.shEOF 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 EOFsource/etc/profileecho 安装完成 echoJAVA_HOME:$JAVA_HOMEecho请执行 source /etc/profile 使环境变量生效运行脚本chmodx install-java8.sh ./install-java8.sh十、常见问题排查问题现象可能原因解决方法add-apt-repository: command not found缺少软件源管理工具sudo apt install -y software-properties-commongpg: command not found缺少 gnupg 工具sudo apt install -y gnupgUnable to locate package temurin-8-jdk软件源未正确添加重新执行 3.2 和 3.3 步骤确认sudo apt update无报错java: command not foundJAVA_HOME 未配置或 PATH 未包含检查echo $JAVA_HOME和echo $PATHjavac: command not found只安装了 JRE 未安装 JDK确认安装的是temurin-8-jdk而非temurin-8-jre多个 Java 版本冲突系统存在多个 JDK使用update-alternatives --config java切换应用启动报错JAVA_HOME not found环境变量未配置按第四节配置JAVA_HOMEGraphics2D 中文显示方块系统缺少中文字体按第五节安装中文字体并执行 8.2 节测试验证fc-list: command not found系统未安装 fontconfigsudo apt install -y fontconfig十一、安装信息汇总项目值Java 版本8u492JDK 包名temurin-8-jdk安装路径/usr/lib/jvm/temurin-8-jdk-amd64JAVA_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_HOMEecho $JAVA_HOME查看所有 Java 版本sudo update-alternatives --list java切换默认 Javasudo update-alternatives --config java查看 JDK 安装路径sudo update-alternatives --display java查看完整 JDK 信息java -XshowSettings:properties -version更新 JDKsudo apt upgrade -y temurin-8-jdk查看当前使用的 Javawhich java验证中文字体fc-list :langzh文档版本2.2适用系统Ubuntu 24.04 LTSJava 版本Adoptium Temurin 8u492最后更新2026-07-17

相关新闻

MATLAB入门

MATLAB入门

1.powergui模块以及模式设置2..slxc文件是啥

2026/7/18 4:52:39 阅读更多 →
从零掌握JMeter性能测试:安装、HTTP压测与数据库连接实战

从零掌握JMeter性能测试:安装、HTTP压测与数据库连接实战

1. 项目概述:从零构建性能测试环境 性能测试,听起来是个挺唬人的词,很多刚入行的朋友可能会觉得这是测试工程师或者高级开发才需要掌握的技能。但实际上,无论你是后端开发、运维,还是想了解自己写的接口到底能扛住多大…

2026/7/18 4:52:39 阅读更多 →
VLA模型:从视觉语言对齐到机器人动作生成的工程实践

VLA模型:从视觉语言对齐到机器人动作生成的工程实践

1. 从“看”到“做”:VLA模型如何重塑机器人学最近几年,如果你关注AI和机器人领域,会频繁听到一个词:VLA,即视觉-语言-动作模型。这听起来像是一个技术术语的简单堆叠,但它背后代表的,是机器人从…

2026/7/18 4:52:39 阅读更多 →

最新新闻

string自我实现

string自我实现

#define _CRT_SECURE_NO_WARNINGS #include"string.h" namespace fhj {//string::string()//先对函数进行初始化//:_str(new char[1] {\0})//这里要是直接为空,那么要是访问的话就算是空指针解引用了,会直接报错,所以这里面放一个\…

2026/7/18 5:33:02 阅读更多 →
YOLOv8船舶类型检测实战:从数据集到PyQt5界面完整开发指南

YOLOv8船舶类型检测实战:从数据集到PyQt5界面完整开发指南

在实际船舶监控、港口管理和海洋安全项目中,快速准确地识别船舶类型是核心需求之一。传统人工观察或简单图像处理方法难以应对复杂海况、多变天气和大量船舶目标,而基于深度学习的目标检测技术能够实现自动化、高精度的分类识别。YOLOv8 作为 YOLO 系列的…

2026/7/18 5:33:02 阅读更多 →
程序员如何构建与管理个人电子书库

程序员如何构建与管理个人电子书库

1. 为什么程序员需要建立个人电子书库作为一名在技术行业摸爬滚打多年的老码农,我深刻体会到技术书籍对职业发展的重要性。不同于碎片化的博客和教程,系统性的技术书籍能帮助我们建立完整的知识体系。但纸质书籍存在几个明显痛点:价格昂贵&am…

2026/7/18 5:33:02 阅读更多 →
Gemini内容粘贴后符号丢失怎么办?AI导出鸭帮你解决Word导出难题

Gemini内容粘贴后符号丢失怎么办?AI导出鸭帮你解决Word导出难题

标题1:Gemini内容粘贴后符号丢失怎么办?用AI导出鸭一键修复格式错乱问题 标题2:Gemini内容粘贴后符号丢失怎么办?AI导出鸭帮你解决Word导出难题 标题3:Gemini内容粘贴后符号丢失怎么办?AI导出鸭三种方式轻松…

2026/7/18 5:33:02 阅读更多 →
RAG技术在企业知识库问答系统中的核心设计与优化实践

RAG技术在企业知识库问答系统中的核心设计与优化实践

1. 知识库问答系统的核心挑战与RAG技术定位在信息爆炸的时代,企业知识管理面临三大核心痛点:海量非结构化文档的利用率低下(平均不足20%)、跨部门知识共享存在壁垒、传统关键词检索的准确率难以突破60%大关。这正是RAG&#xff08…

2026/7/18 5:33:02 阅读更多 →
人形机器人技术解析:从宇樹H1看运动控制与AI融合的挑战与前景

人形机器人技术解析:从宇樹H1看运动控制与AI融合的挑战与前景

1. 从“宇樹”刷屏到行业冷思考:人形机器人到底走到了哪一步?最近,我的朋友圈和几个技术群里,被“宇樹機器人”的各种视频刷屏了。视频里,那个名为H1的人形机器人,在工厂车间里健步如飞,甚至能小…

2026/7/18 5:32:02 阅读更多 →

日新闻

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击: https://kaifayun.com 第一章:从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档(PRD)生成实践中,原始业务意图往往以自然语言片…

2026/7/18 0:00:38 阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击: https://codechina.net 第一章:Cursor配置生成失效?3大隐藏陷阱4行修复代码,资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效,是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:38 阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者:钟声编辑:Mark出品:红色星际头图:智能驾驶图片据悉,国内某头部智驾公司端到端模型技术大牛Z投身创业,并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈,更是业内…

2026/7/18 0:00:38 阅读更多 →

周新闻

月新闻