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

Java17升级JasperReports6.20.0后字体配置空指针等异常求助

Java 17 + JasperReports 6.20.0 报表运行异常解决指南

问题背景

将应用从Java 8升级至Java 17,同时同步升级JasperReports从6.0.3到6.20.0后,报表运行失败,抛出两类异常。此前已将字体导出为扩展Jar包,在Java 8 + JasperReports 6.0.3环境下运行正常。

环境信息

  • OS:Red Hat Linux 7.9
  • Tomcat:JWS 5.4(已配置-Djava.awt.headless=true)
  • JDK:Oracle Java 17

抛出的异常信息

  1. Caused by: java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null
  2. Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

已尝试但无效的方案

  • 启用无头模式(已配置仍无效)
  • 添加JasperReports 6.20.0的多数可选依赖Jar包
  • 基于Java 17重新生成Jasper报表文件
  • 从扩展Jar包提取字体添加至资源文件夹

针对性解决方案

1. 安装系统字体依赖库

Red Hat Linux 7.9下,Java 17的AWT字体配置依赖系统基础字体库,执行以下命令安装缺失组件:

yum install fontconfig dejavu-sans-fonts

安装完成后重启Tomcat,使系统字体配置生效。

2. 规范JasperReports字体扩展Jar包配置

确保字体扩展Jar包符合JasperReports 6.20.0的要求:

  • 包内必须包含jasperreports_extension.properties文件,示例配置:
    net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
    net.sf.jasperreports.extension.simple.font.families.customfonts=fonts/customfonts.xml
    
  • 字体定义XML文件(如customfonts.xml)需正确声明字体族信息:
    <?xml version="1.0" encoding="UTF-8"?>
    <fontFamilies>
        <fontFamily name="CustomFont">
            <normal>fonts/CustomFont-Regular.ttf</normal>
            <bold>fonts/CustomFont-Bold.ttf</bold>
            <pdfEncoding>Identity-H</pdfEncoding>
            <pdfEmbedded>true</pdfEmbedded>
        </fontFamily>
    </fontFamilies>
    
  • 将字体扩展Jar包放置在Tomcat的WEB-INF/lib目录下,避免与其他字体配置冲突。

3. 调整JVM启动参数

在Tomcat启动参数中添加以下配置,强制指定字体加载路径:

-Dsun.awt.fontconfig=/etc/fonts/fonts.conf
-Djava.awt.fonts=/usr/share/fonts/dejavu

若使用自定义字体目录,替换/usr/share/fonts/dejavu为你的字体目录路径。

4. 排查JRStyledTextParser初始化问题

该异常多为字体配置异常引发的连锁反应,解决字体问题后通常会自动消失。若仍存在:

  • 清理WEB-INF/lib下的旧版本JasperReports残留Jar包,避免依赖冲突。
  • 补充JVM参数:-Djava.awt.headless.lib=true,增强无头模式下的AWT环境兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:52:05