Cannot load from short array because “sun.awt.FontConfiguration.head“ is null

文章目录

问题

新服务器,部署项目,使用easyExcel功能导出文件时,报错提示:Cannot load from short array because “sun.awt.FontConfiguration.head” is null,可以看到是字体文件配置引发的空指针异常;

解决方法

登录服务器,执行命令

yum install fontconfig
fc-cache --force

再重启服务,再次导出文件,成功导出

但是只在Linux上出现了该报错,在本地windows环境没有出现
JDK都使用的是17版本

错误原因
由于在linux上缺失Easyexcel使用的字体导致
解决办法
下载一个jdk1.8
在其jre/lib目录里复制fontconfig.bfc文件和font目录到Linux安装的jdk的lib目录里
在这里插入图片描述
重启服务,重新请求,返回一坨

{“mss”:“操作成TH” “NE”."/9 ;/4AOSKZTRGABARAAOABAD/2WBDAGBROSBO HDWC ICO KDBONDASLDBKSEH&LHROIHOAHINRICAMICISIXNCKIDGLDAXIDOUHVCEPTRYPCAZMDL/2ABDAOKIOOWLDBRIDRYIRWALILYAEBA7E8 /80AHWAOLBAOEBAOEAAAAAEOAOEBECIOOL./80A+RAAREDAWIEANLFBAOAATSAOIDAORDRTHINUGEITHBVIXFDIKBKAEIIOKWRYSOIARI?2 VERKThCYCROLI COKSONYOKSORYTHSUSLDINGS IVHLTINI19 ;Z2HHL 4+TIESHDGErYSYPOSTDS+PH6/8OAHWEAAWEBAOEBAOEBAOAAAECAWOPBRCICDOL/8OAtREAASRECBAODBACFBAOAAOTSAECAXEBSEXBHIBUdCRINOEIFEKRX23ell6go0Eh ali mikpo0U!Za%m maokpaanolmasr0tba3uLGExcblylnK0tPUldbX2Mna4uPkebn60nSvP09tb3+Pn/9OADAIBATRAxAPWDriea h?olysikko0eKcztyte. ye2./4K40K 1o4dlpgnCN2xESuObesrT/A9Tf+/TpsbT/nlg/7ivP7P4;31DCVHRILK3KOPUISIYImG/AI /hXdtCLKTOSLIGATR;2NbnAb2xzatzeo8 i2cs/inls/79incws +tSD/ALirelsn2ortelohnsislurso adl 8rmo Afipinaisf+in mc s/4fgxrde,tra/vlrmaclrlgcnolvetdaviki0nvlsmldalotsx40ww wc2/79/hlxolh242 1of8 rAroitihdaIrv7F c5Ybsb0r"9D +eauzhmimNiGup7ecitK +Eo e Yhyz0koPYhSLad/z4NY/AH5X/CnDSd0/6B9r m+V/0KeK5Y9h&eXWGK6/OD7T/ALST/ADUSLO+PSL10SDVNBCPAdpSHFarg3/ IFXK2GKDGG6 IKOPLBDIIbHISIDeLznh3b I4TR7ZpTWBhkc mCa /pnGtzr108tEeI8V4r492X1%1s4r9a7dg9r P1V4Sor05p&mlpIdniOpou2bn! yPh3A15F2ai3gzAKGSR1OUY inatIK!Txa StAPY 3ORK YPBVISAIDY dSOIKASDESOSSKGY4/LHDT4 RKF ;OIvCTO/LETHEONK 6IYL4SD?X9YH/YRRKR AZESAYIPTDOHSGK2U4/A&RARVSSAVH!1172GOKYMKOAUIO2TBHBKDHDWPISzGHNTmEY4P1+1 1sprtHXOt56Dh?sTe91G2062A4YLMKCTeHFA/OuTU/i T42ZuzEB0e/0lsrv8A30Ri9a808R29sSi XTrwoSYooLmPXB +P IrH+3aA/7tHmIT /TH.hG+ kHmkfe euItla2te60.2ol sllt2doilxrosanlo bohblexen:x b8az0x0e?nUkkOneIt09U12B2ADH0DC+SARULOTYT6 SrNSRHLOTRS W AT OED?HfavAtX+YotHC899u2OvkDGT6j+de+3sZkgYDOryzXPCsV19bD2+Riycmn8K9X sbRws5un4yI 1PIKTI5IWXxIG+ 7IOSEHKZAx/+IHASrItHBVL/TYS2387 IRC IPONHIU9IOSWNERIXGGK5OT A;2+HDXRS50H1GYFYBBHGKd420AHS4HDWIEm.4UYHYIWUBESMUV3F3i +E6/UOWOrOTX+POrKSEKLZIEUSEBmx2rxa12s9eh1zSTGYDi5RIbSLXPI/mM19DG A2cetlGt+reov2lkslaGFWT+OVYKGVTOP gHC0i 2940v +DGm7;021 0C/KUFEIabK1051FbXA366F TPGIF924GI 1K/AY I6+3G3CY5L/AF630IBUDXNQXERXL5a9XIT4GBACT6HEES+HIOHOWUIXSBRYWIILMNCXOEYVI8st1 6PIW4Gr q/ACBL/WDSDP/AEE bFVaX15A1 /89e0n/IrCKwsUhZy1 /xW/5V2 c2FIVFEKapEOIHRKHt +IS12/ d1841+T/WUaObIziV;2HSinCu2/ 4S37/ADecH/I/wAaK/hIrA55WIXI/8TPe/mPK3/756/01/4Si9/55W/Ay3+toh7aI1iRK/UscCp0P cn/mtt 8rt/AL56/01/4Su+/mcet/3y3+Htoh7aT28;DBgs+mAyKOKSn/hL6/8A5423/ILI40V/AL+OI8APG2/756/AOKOSTFUL+aIT /3R3 IVL AWMISLT/AL46 /HCKO9tEPDOBVOKIKF CB mATtOXK ADWtP+1G /D; K/HONT/ADe?p/3:3/ VHtoh7aJCKGOr/yA9/69P/AEE1XX/Ccn ALT/vhv/iqjufeo3Vrilbvahzkg08881666d1b47f7c44}
在这里插入图片描述

2025-03-07 12:49:56.965+0000 [id=1] SEVERE hudson.util.BootFailure#publish: Failed to initialize Jenkins java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) 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.X11FontManager.<init>(X11FontManager.java:56) Caused: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85) Caused: java.lang.InternalError at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75) at java.desktop/java.awt.Font.getFont2D(Font.java:526) at java.desktop/java.awt.Font.getFami
03-08
<think>嗯,用户遇到了Jenkins初始化失败的问题,具体错误是NullPointerException在FontConfiguration.head,可能和Java X11FontManager有关。我需要先理解这个错误的背景和原因。 首先,用户提到错误信息是FontConfiguration.head为空导致的NullPointerException。这说明在Jenkins启动时,Java试图加载字体配置,但某个环节出错了。可能的原因包括缺少字体库、Java运行时环境(JRE)的字体配置问题,或者X11相关依赖缺失。 接下来,参考用户提供的引用[^1]中的命令,他们可能已经尝试安装fontconfig和openjdk-11-jre。不过问题依然存在,可能需要更深入的解决方案。 我记得在Linux系统中,Java应用程序有时会因为缺少字体库或字体配置问题而无法正确启动。特别是当使用无头模式(headless)时,可能需要安装额外的字体包。例如,安装libfreetype6和fontconfig通常是解决这类问题的第一步。另外,确保JRE的headless版本是否正确安装也很重要,比如openjdk-11-jre-headless。 另一个可能性是X11依赖的问题。即使Jenkins运行在没有图形界面的服务器上,某些Java库可能仍然需要X11相关的库。因此,安装xorg和相关的依赖包可能会解决这个问题。例如,xfonts-utils、xfonts-base和libxrender1等包。 此外,用户可能需要检查Java的字体配置路径是否正确。可以通过更新字体缓存(fc-cache -fv)来刷新系统字体信息,确保Java能够正确检测到可用的字体。 如果上述步骤仍不能解决问题,可能需要调整Java的启动参数,比如强制使用headless模式,或者在JVM参数中指定字体配置的路径。例如,添加-Djava.awt.headless=true到Jenkins的启动选项中。 最后,重启Jenkins服务以应用所有更改是必要的。用户可能需要执行systemctl restart jenkins或类似命令来重启服务,确保所有配置生效。 总结一下,解决方案的步骤可能包括安装必要的字体和依赖包,确认JRE的正确安装,更新字体缓存,调整Java启动参数,以及重启服务。需要逐步排查每个可能的原因,确保每一步都正确执行。</think>### Jenkins初始化失败解决方案:FontConfiguration.head空指针异常 #### 问题分析 Jenkins启动时出现`NullPointerException in FontConfiguration.head`错误,通常由Java字体配置缺失或X11依赖异常导致。此问题常见于Linux系统环境中未正确配置字体库或缺少图形界面相关组件。 --- #### 分步解决方案 ##### 1. 安装基础字体库 ```bash sudo apt-get install fontconfig libfreetype6 ``` - **作用**:补充缺失的字体渲染库和配置工具 - **验证**:`fc-list`命令查看已安装字体列表 ##### 2. 安装X11依赖 ```bash sudo apt-get install xfonts-utils xfonts-base libxrender1 xorg ``` - **注意**:即使服务器无图形界面,Java仍依赖X11库进行字体渲染 ##### 3. 更新JRE配置 ```bash sudo apt-get install --reinstall openjdk-11-jre-headless ``` - **关键点**:必须使用`-headless`版本避免GUI依赖冲突 ##### 4. 重建字体缓存 ```bash fc-cache -fv ``` - **日志检查**:观察输出中是否包含`/usr/share/fonts`路径 ##### 5. 强制启用Headless模式 修改Jenkins启动脚本(如`/etc/default/jenkins`): ```bash JAVA_ARGS="-Djava.awt.headless=true" ``` 重启服务: ```bash sudo systemctl restart jenkins ``` --- #### 验证步骤 ```bash journalctl -u jenkins -n 50 --no-pager ``` 检查日志中是否仍出现`FontConfiguration`相关错误 --- #### 扩展配置建议 1. **字体路径检查**: ```bash echo $JAVA_HOME/jre/lib/fonts ``` 确认存在`fallback`字体目录 2. **备选方案**: ```bash mkdir -p /usr/share/fonts/fallback ln -s /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf /usr/share/fonts/fallback/ ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值