EasyExcel在Linux环境由于缺少Fontconfig 报空指针异常

在Windows开发时完全没问题。
报错的代码

EasyExcel.write(out).head(head).sheet("第1页").doWrite((Collection<?>) null);

在这里插入图片描述

原因

EasyExcel 是一个基于 Java 的开源 Excel 操作库,它需要依赖字体库来支持 Excel 文本样式等功能。在 Linux 系统中,如果没有安装指定的字体库,使用 EasyExcel 时就会出现空指针异常。

EasyExcel报错,是由于缺失Fontconfig 。
Fontconfig 是一个用于管理和渲染字体的库,它为操作系统提供了一致的字体接口。在 Linux 系统中,很多应用程序都依赖 Fontconfig 来实现字体渲染功能。

解决

重新编写Dockerfile,制作镜像时就下载好字体,这里可能等待时间比较久。

FROM openjdk:8-jdk-alpine
WORKDIR /opt/apps/gateway/logs/
ADD ./erp-0.0.1-SNAPSHOT.jar /App/
EXPOSE 48080
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache
ENTRYPOINT ["java","-Xmx2048m","-jar"]
CMD ["/App/erp-0.0.1-SNAPSHOT.jar"]

再次访问,完美解决。

命令解释

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* && mkfontscale && mkfontdir && fc-cache

这个命令是在 Docker 镜像中安装 DejaVu 字体库并将 Alpine Linux 的软件源替换为阿里云镜像,以便提高软件下载速度。

将 Alpine Linux 的软件源替换为阿里云镜像:sed -i ‘s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g’ /etc/apk/repositories
安装 DejaVu 字体库和 Fontconfig:apk add --update ttf-dejavu fontconfig
删除安装包缓存:rm -rf /var/cache/apk/*
生成字体索引文件:mkfontscale && mkfontdir
更新字体缓存:fc-cache

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 空指针异常的发生是因为在使用`easyexcel.build()`方法时出现了空指针。空指针异常通常是因为对象没有被正确初始化或者引用的对象为空。在这种情况下,通常需要检查以下几个可能原因: 第一种可能是没有正确导入`easyexcel`库或者没有在代码中正确引入相关的类。请确保已经正确导入所需的库和类,以避免出现空指针异常。 第二种可能是缺少必要的参数或者参数传递错误。`easyexcel.build()`方法很可能需要一些参数来正确执行,例如输入输出文件的路径,数据源等。请确保参数的正确性和可用性,以避免出现空指针异常。 第三种可能是数据源或文件路径为空或者无效。如果数据源或文件路径为空,`easyexcel.build()`方法将无法找到需要处理的数据,从而导致空指针异常。请检查数据源或文件路径是否正确设置,并确保数据的可用性。 第四种可能是方法调用顺序错误。在使用`easyexcel.build()`方法之前,可能需要进行一些前置操作或者设置。请确保在调用`easyexcel.build()`方法之前,已经正确设置了相应的参数和执行了必要的操作。 总之,空指针异常的发生可能是由于上述原因导致的。通过仔细检查和确认这些可能原因,并及时进行修正,我们可以避免空指针异常的发生,并成功使用`easyexcel.build()`方法。 ### 回答2: easyexcel.build()方法空指针异常可能有以下几种原因: 1. easyexcel.jar未正确引入:首先需要确保在项目中正确引入了easyexcel.jar文件,并且版本与项目要求相匹配。如果未引入该jar包或者版本不对,就会出现空指针异常。 2. easyexcel.build()方法参数错误:在调用easyexcel.build()方法时,需要传入相应的参数,例如文件路径、数据源等。如果传入的参数为null,就会出现空指针异常。需要检查传入的参数是否正确、是否为空。 3. 数据源为空:如果没有正确设置数据源,在调用easyexcel.build()方法时就会出现空指针异常。需要确保数据源已经正确设置,并且不为空。 4. 代码逻辑问题:在使用easyexcel.build()方法之前的代码逻辑可能存在问题,导致空指针异常。需要仔细检查代码逻辑,确保在调用该方法之前的所有必要操作已经完成。 如果以上方法仍然无法解决问题,可以根据异常堆栈信息来查找问题的具体原因,并结合代码进行调试和分析。在解决问题过程中,可以参考EasyExcel官方文档或者寻求相关社区的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值