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/23 7:41:52 阅读更多 →
从零掌握JMeter性能测试:安装、HTTP压测与数据库连接实战

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

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

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

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

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

2026/7/23 7:51:46 阅读更多 →

最新新闻

【Kimi论文辅助黄金公式】:1个提示词模板+2类学科适配策略+4步文献综述提速法

【Kimi论文辅助黄金公式】:1个提示词模板+2类学科适配策略+4步文献综述提速法

更多请点击: https://kaifayun.com 第一章:【Kimi论文辅助黄金公式】:1个提示词模板2类学科适配策略4步文献综述提速法 Kimi论文辅助黄金公式核心提示词模板 你是一位[学科领域]资深研究者,请基于以下要求协助我完成学术写作&a…

2026/7/24 0:18:35 阅读更多 →
本地大模型部署全攻略:从Ollama到企业级容器化

本地大模型部署全攻略:从Ollama到企业级容器化

1. 本地大模型部署方式全景解析在AI技术快速发展的当下,本地部署大模型已成为企业数字化转型和个人开发者探索AI能力的重要选择。与云端API调用相比,本地部署能够提供更高的数据隐私性、更低的长期使用成本以及更灵活的定制空间。目前主流的本地部署方式…

2026/7/24 0:18:35 阅读更多 →
扩散模型与强化学习的融合:智能生成新范式

扩散模型与强化学习的融合:智能生成新范式

1. 扩散模型与强化学习的融合背景扩散模型近年来在生成式AI领域崭露头角,其通过逐步去噪的过程生成高质量样本的特性,使其在图像、音频等领域展现出惊人潜力。而强化学习(RL)作为决策优化的利器,在控制策略、游戏AI等场…

2026/7/24 0:18:35 阅读更多 →
计算机毕业设计之基于SpringBoot的企业综合办公自动化系统设计与实现

计算机毕业设计之基于SpringBoot的企业综合办公自动化系统设计与实现

互联网的普及为人们的日常生活提供了极大的方便。因此,将目前的网上注册登记与网上进行整合,采用springboot框架搭建了网上企业综合办公自动化系统设计与实现平台,从而达到了企业综合办公自动化的信息化管理。网络平台的运用使得企业综合办公…

2026/7/24 0:18:35 阅读更多 →
模糊车牌识别系统:CNN与超分辨率技术的实战应用

模糊车牌识别系统:CNN与超分辨率技术的实战应用

1. 项目背景与核心价值去年在某个智慧园区项目中,我们遇到了一个棘手问题:出入口摄像头抓拍的车牌图像中,有近30%因为车速过快或天气原因出现模糊。传统OCR识别率直接跌到40%以下,保安亭每天要手动处理上百条记录。这就是我们研发…

2026/7/24 0:18:35 阅读更多 →
Agent 演示很丰满,生产很骨感:拆解工具调用、记忆与规划的取舍边界

Agent 演示很丰满,生产很骨感:拆解工具调用、记忆与规划的取舍边界

聊《同样是Agent,为什么有的能上线、有的只能演示?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要上周的需求评审会上,产品经理甩出一个需求:“我们要做一个能自…

2026/7/24 0:17:35 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻