今天部署项目,启动后验证码接口就报错,开发环境无法复现,debug后发现原来是hutool验证码类需要的字体服务器缺少对应的字体。
堆栈提示
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.<init>(SunFontManager.java:315)
at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at java.desktop/sun.awt.X11Fon
1.安装fontconfig
yum install fontconfig ttmkfdir
添加字体
安装完成后进入/usr/share/fonts/
把window的C:\Windows\fonts按需求丢进去
fc-cache -f -v # 刷新字体缓存
fc-list # 查看安装的字体
fontconfig 相关文件位置
/etc/fonts # 配置文件位置
/usr/share/fonts/ #字体位置
fontconfig相关操作
# 重新生成字体缓存 ,`-f`选项表示强制重新生成缓存,而`-v`选项表示输出详细信息
fc-cache -f -v
# 查看已安装的字体
fc-list