Linux环境下OpenJDK11关于字体的问题

一、问题场景

开发环境:windows+openjdk11

在开发中需要用到字体类,获取字体的宽高等参数,代码如下:

Font font = new Font("Fixedsys", Font.CENTER_BASELINE, FONT_SIZE);
FontRenderContext frc = new FontRenderContext(new AffineTransform(), true, true);
Rectangle rec = font.getStringBounds("a", frc).getBounds();

在开发环境下运行正常,没有任何问题。

但是把jar包放到linux环境中运行时,发现接口报错。

但也并非所有的linux环境都会报错。

二、问题排查

后来查看日志,发现是NPE异常:

打印font对象也是NPE:

 三、问题解决

由于OpenJDK相比于OracleJDK,对某些部分作了简化,所以简化这部分就依赖于环境中的配置,在某些环境下,这些配置是有的,所以也能正常运行,但对于某些环境,缺失这部分配置,而jdk里面也没有,所以导致NPE。

解决办法:

1、在环境中增加配置:

yum install -y fontconfig

 安装完成后问题解决。

2、将OpenJDK换成OracleJDK。换开发环境比较麻烦,而且如果是商用的话注意OracleJDK的版本(Oracle JDK 8u211及以上版本商用收费)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值