You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Jasper Reports在Docker中遇FontConfiguration空指针及字体问题

Spring Boot + Jasper Reports Docker部署字体问题解决方案

一、openjdk:17-alpine镜像的NullPointerException问题

你之前在Dockerfile里用apt-utils这类Debian/Ubuntu系的包命令,但alpine用的是apk包管理器,依赖根本没装成功,这是报错的核心原因。按下面步骤修正:

  • 替换Dockerfile中的依赖安装命令,用apk安装正确的字体组件:
RUN apk add --no-cache fontconfig ttf-dejavu
  • 安装完成后强制刷新字体缓存:
RUN fc-cache -f -v
  • 启动应用时加上headless模式参数,规避AWT图形环境依赖:
java -Djava.awt.headless=true -jar your-app.jar

二、openjdk:17-oracle镜像的Times New Roman缺失问题

这个报错是因为镜像里没预装Times New Roman字体,给两种解决办法:

方法1:在镜像里安装兼容/原版字体

  • 如果用兼容字体,直接通过yum安装liberation字体包(包含Times New Roman的替代字体,JVM会自动识别):
RUN yum install -y liberation-fonts
  • 如果需要原版Times New Roman,把本地的字体文件(如times.ttf、timesbd.ttf等)复制到镜像的字体目录,再刷新缓存:
# 假设本地字体放在项目的fonts目录下
COPY fonts/ /usr/share/fonts/
RUN fc-cache -f -v

方法2:修改Jasper Reports配置用替代字体

  • 要么直接修改报表模板,把字体换成镜像里已有的(比如DejaVu Serif);要么在项目里新建jasperreports_extension.properties文件,配置默认字体:
net.sf.jasperreports.default.font.name=DejaVu Serif

同时确保pom.xml里的jasperreports-fonts依赖包含该字体。

内容的提问来源于stack exchange,提问作者KenobiBastila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:35:11