“Handler dispatch failed: java.lang.InternalError: java.lang.reflect.InvocationTargetException”

问题描述

部署生产环境时访问验证码生成接口报错:"Handler dispatch failed: java.lang.InternalError: java.lang.reflect.InvocationTargetException"

打开运行日志文件查看报错原因
Caused by: java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1269) at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224) at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106) at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706) at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358) at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/sun.font.SunFontManager.(SunFontManager.java:315) at java.desktop/sun.awt.FcFontManager.(FcFontManager.java:35) at java.desktop/sun.awt.X11FontManager.(X11FontManager.java:56) … 92 common frames omitted


原因分析:

提示:开发环境及本地均可正常访问,生产环境部署遇到此问题,所以判断应该是生产环境服务器的问题

从报错原因来看应该是调用验证码时候没有找到对应的字体


解决方案:

1.安装字体库:如果你在Linux服务器上运行应用程序,尝试安装fontconfig库,确保系统字体正确配置。具体的安装命令如下:

# For Debian/Ubuntu
sudo apt update
sudo apt install -y fontconfig

# For CentOS/RHEL
sudo yum install -y fontconfig

2.使用默认字体配置检查/etc/fonts目录下的字体配置文件是否完整,并且存在fonts.conf文件。可以尝试将一个标准的 fonts.conf 文件复制到该目录下。

注意:打开fonts.conf里面配置了几个地址,检查必须存在的目录是否存在: /usr/share/fonts, /usr/share/X11/fonts/Type1, /usr/share/X11/fonts/TTF, /usr/local/share/fonts, /usr/lib/fontconfig/cache(字体缓存目录)等。这些目录是 Fontconfig 搜索和缓存字体时所依赖的。从其他系统或来源获取字体文件,并将它们安装到这些目录下。

字体目录缺失:这三个目录主要是用来存放一些常见的字体类型,如 Type1 字体(主要用于 X11)和 TrueType字体(常见的字体格式)。如果这些目录不存在,Fontconfig 将无法在这些位置查找字体文件。导致系统无法使用这些类型的字体,或者只能依赖其他存在的字体目录。这意味着如果你有特定字体依赖于这些目录的位置,它们将无法被加载。比如,某些图形界面程序(例如 X11应用)可能依赖这些目录来加载字体,缺失这些目录会导致某些字体不可用。

系统默认字体的影响:一些系统级的字体可能默认安装在这些目录下。如果这些目录不存在,Fontconfig 会尝试在其他目录中查找字体,但如果系统默认字体仅在这些目录下,可能会遇到字体显示问题或无法找到某些字体的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值