• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • 随笔>
  • 正文
  • Caused by: java.lang.NullPointerException at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)

    2025年08月06日 690 阅读 0 评论 2213 字

    你提供的这段 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

    1. 在 Dockerfile 中加入字体支持(如果你用的是容器)

    RUN apt-get update && apt-get install -y fontconfig fonts-dejavu-core

    或者对于 Alpine 镜像:

    RUN apk add fontconfig ttf-dejavu

    1. 运行 Java 应用时指定 headless(避免 GUI 字体加载)

    如果你的程序 不需要 GUI 图形界面,可以在启动参数中加:

    -Djava.awt.headless=true

    例如:

    java -Djava.awt.headless=true -jar your-app.jar

    ⚠️ 注意:这只适用于 不使用 GUI 或图形渲染的 Java 应用。
    
    1. 检查和替换破损的字体配置文件(极少数情况)

    如果你已经装了字体,但问题仍然出现,尝试重新安装 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 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.015 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。