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