errMsg: java.lang.ArrayIndexOutOfBoundsException: 0 at sun.font.CompositeFont.getSlotFontCompositeFo

本文详细解释了Java中atsun.font.CompositeFont.getSlotFont()方法引发的ArrayIndexOutOfBoundsException错误,指出在Linux服务器上使用openJDK时可能出现此问题,因为某些字体库缺失。提供了解决方案,包括升级到OracleJDK以及安装Linux字体库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

errMsg: java.lang.ArrayIndexOutOfBoundsException: 0 at sun.font.CompositeFont.getSlotFontCompositeFont.java:375错误详解


at sun.font.CompositeFont.getSlotFontCompositeFont.java:375错误详解)

详细错误信息

java.lang.ArrayIndexOutOfBoundsException: 0
at sun.font.CompositeFont.getSlotFont(CompositeFont.java:375)
at sun.font.CompositeGlyphMapper.initMapper(CompositeGlyphMapper.java:81)
at sun.font.CompositeGlyphMapper.(CompositeGlyphMapper.java:62)
at sun.font.CompositeFont.getMapper(CompositeFont.java:433)
at sun.font.GlyphList.mapChars(GlyphList.java:269)
at sun.font.GlyphList.setFromString(GlyphList.java:244)
at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:71)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2928)

错误原因

在本地windows环境调试没有问题,一到linux服务器上图片验证码就无法加载,并且报错数组越界,
或者导出excel文件时无业务逻辑出现莫名数组越界报错。这个是因为openJdk是从oracleJdk移植过来的,某些字体库可能没有版权被移除掉,导致了这个错误,使用oracle官方的jdk版本就能够完美解决这个问题。

环境配置

阿里云的ecs服务器,jdk版本为1.8 openJdk

解决方案

1.检查服务器jdk版本,如果使用的是openjdk需要更换版本,换成1.8 oracleJdk
2.我这边推荐去oracle官网注册下载,经验证某些版本的1.8 oracleJdk可能也会出现这个问题

	官网下载地址:https://www.oracle.com/java/technologies/downloads/

3.如果还是存在以上问题,下载linux的字体库

//安装字体库
yum install fontconfig
//强制刷新
fc-cache –force
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值