Caused by: java.lang.NullPointerException at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) Published on Aug 6, 2025 in 随笔 with 0 comment 你提供的这段 Java 异常堆栈显示: Caused by: java.lang.NullPointerException at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) 这意味着你的 Java 应用在启动或运行过程中因为字体系统相关的问题导致了 NullPointerException,出现在 FontConfiguration 的内部初始化阶段。 🧠 这是一个常见的 Linux/容器环境中 Java GUI 字体配置出错问题。 🎯 问题核心: Java 在尝试加载字体配置时,依赖一些字体文件和配置(比如 /usr/share/fonts、/etc/fonts/fonts.conf),但在某些精简的环境(特别是 Docker 容器、Alpine Linux、headless 模式)中,这些文件 不存在或不完整,导致: 字体加载失败 FontConfiguration.getVersion() 返回 null,引发 NullPointerException 在你使用 Swing、JavaFX 或字体渲染的地方就会崩 ✅ 解决方案 1. 安装字体库(推荐) 在 Ubuntu/Debian 系统中: sudo apt update sudo apt install -y fontconfig fonts-dejavu-core 在 Alpine Linux 中(用于精简 Docker 镜像): apk add fontconfig ttf-dejavu 2. 在 Dockerfile 中加入字体支持(如果你用的是容器) RUN apt-get update && apt-get install -y fontconfig fonts-dejavu-core 或者对于 Alpine 镜像: RUN apk add fontconfig ttf-dejavu 3. 运行 Java 应用时指定 headless(避免 GUI 字体加载) 如果你的程序 不需要 GUI 图形界面,可以在启动参数中加: -Djava.awt.headless=true 例如: java -Djava.awt.headless=true -jar your-app.jar ⚠️ 注意:这只适用于 不使用 GUI 或图形渲染的 Java 应用。 4. 检查和替换破损的字体配置文件(极少数情况) 如果你已经装了字体,但问题仍然出现,尝试重新安装 fontconfig,或检查文件是否存在: ls -l /etc/fonts/fonts.conf ls -l /usr/share/fonts ✅ 总结 解决方式 适用场景 安装字体包 系统缺字体或在容器中运行 添加 -Djava.awt.headless=true 如果你不需要 GUI 或字体渲染 检查 /usr/share/fonts 目录 有时权限或内容缺失也会导致崩溃 Docker 容器中安装字体 Dockerfile 中添加 fonts-dejavu-core 等 如果你告诉我你是在哪个环境中运行(如本机 Ubuntu、Docker、Alpine、Kubernetes 等),我可以给你最直接的命令来修复这个问题。需要吗? 您说: window字库 ChatGPT 说: 你提到 "window字库",我理解你可能是遇到了 Java 程序在 Windows 系统上运行时涉及字体(字库)相关的问题,比如: Java 加载字体失败 没有找到中文字体 需要导入特定的字体(比如微软雅黑、宋体、仿宋等) 或者你想了解 Windows 上有哪些系统字库可用 🎯 下面我给你梳理一下 Windows 字库相关的重点: ✅ 1. Windows 默认系统字体位置 在 Windows 系统中,字体文件(TTF/OTF)默认存放在这个目录: C:\Windows\Fonts 你可以直接在资源管理器中访问,也可以通过命令打开: start C:\Windows\Fonts ✅ 2. 常见的系统字体名称(Java 可识别) 以下是一些 Windows 中常见、可被 Java 加载的字体名称(逻辑名称): 中文名称 字体文件名 Java 使用名(逻辑名称) 微软雅黑 msyh.ttf Microsoft YaHei 宋体 simsun.ttc SimSun 黑体 simhei.ttf SimHei 仿宋 FZSong_S.TTF 或 simfang.ttf FangSong 楷体 simkai.ttf KaiTi 新宋体 NSimSun.ttc NSimSun Arial arial.ttf Arial Times New Roman times.ttf Times New Roman 本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。