无法从短数组加载,因为 Java 17 和 Jasper 6.20.0 会抛出“sun.awt.FontConfiguration.head”为 null

问题描述 投票:0回答:2

我们将应用程序升级到 Java 17(从 Java 8),将 Jasper 升级到 6.20.0(从 6.0.3)。在此升级过程中,Jasper 报告失败,但有两个例外。 字体已经导出并用作扩展 jar,它在 java 8 和 jasper 6.0.3 上运行良好。但是升级完成后,会出现以下给定的异常。

操作系统:红帽Linux 7.9 tomcat:jws 5.4(-Djava.awt.headless = true)
jdk:Oracle Java 17

  1. “引起:java.lang.NullPointerException:无法从短数组加载,因为“sun.awt.FontConfiguration.head”为空”

  2. 无法初始化类net.sf.jasperreports.engine.util.JRStyledTextParser。

尝试了以下解决方案,但失败了

  1. 首先尝试启用healess模式,但没有解决问题
  2. Jasper 6.20.0 的大多数依赖可选 jar 也已添加,但没有解决它
  3. 该报告的 jasper 文件是基于 java 17 重新生成的,但没有帮助
  4. 从extetion jar中提取字体并添加资源文件夹,但没有解决
java oracle nullpointerexception jasper-reports redhat
2个回答
2
投票

问题出在 Java :)

我们通过从旧 JDK 复制文件夹和文件解决了这个问题。

从 JDK8/jre/lib 复制:

  • 文件fontconfig.bfc
  • 文件夹字体

到 JDK17/lib

BR Jan V.


0
投票

安装 fontconfig 帮助我解决了错误。

https://yum-info.contradodigital.com/view-package/base/fontconfig/

只需运行命令

sudo yum install fontconfig
并重新启动应用程序服务器。错误消失了。

© www.soinside.com 2019 - 2024. All rights reserved.