docker使用openJDK导致Excel导出问题

简介: docker使用openJDK导致Excel导出问题

问题:本地环境导出Excel正常,测试环境导出Excel失败

image.png
看到上方报错日志开始以为是初始化WorkBook失败导致的空指针问题
image.png
后来打印了WorkBook对象发现并不是这个原因导致的空指针

解决办法

经排查发现开发项目的时候都是基于OracleJDK 1.8来做的,FontConfig组件可以正常运行。但是发布到docker更换成OpenJDK1.8后,无法正常运行,后台代码抛出异常
后在DockerFile文件中加入如下命令,在容器中安装相关模块解决问题。

RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig

调整前:

VOLUME ["/data/properties"]

ARG JAR_FILE=pay-service-main/target/xxx.jar
COPY ${JAR_FILE} xxx.jar

ENTRYPOINT ["java","-jar","/xxx.jar"]

调整后:

VOLUME ["/data/properties"]

ARG JAR_FILE=pay-service-main/target/xxx.jar
COPY ${JAR_FILE} xxx.jar

#font-adobe-100dpi:字体
#ttf-dejavu:也是一款开源字体
#这几个组件下载都极慢,建议在基础镜像里面添加不然每次重新下载严重影响打包速度。。。
RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig

ENTRYPOINT ["java","-jar","/xxx.jar"]

扩展

如果没有使用docker导致的这个报错则需要在宿主机(centOS7)下执行如下命令安装FontConfig组件。

yum install fontconfig
fc-cache --force
相关文章
|
1月前
|
NoSQL 关系型数据库 MySQL
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队; 刚开始拿到这个需求,第一时间想到就是需要维护一个FIFO先进先出的队列,给定队列一个固定size,在队列里面的人进行排队进行数据导出,导出完成后立马出队列,下一个排队的人进行操作;还考虑到异步,可能还需要建个文件导出表,主要记录文件的导出情况,文件的存放地址,用户根据文件列表情况下载导出文件。
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
|
3月前
|
Java Apache Spring
springboot如何导出Excel某个表的表字段以及字段类型
springboot如何导出Excel某个表的表字段以及字段类型
32 0
|
3月前
|
关系型数据库 MySQL 数据库连接
python查询数据库的某个表,将结果导出Excel
python查询数据库的某个表,将结果导出Excel
46 0
|
2月前
|
XML Java 数据格式
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
58 0
|
4天前
|
easyexcel 数据库
公司大佬对excel导入、导出的封装,那叫一个秒啊
封装公司统一使用的组件的主要目标是为了简化开发人员的调用流程,避免各个项目组重复集成和编写不规范的代码。文中提到对阿里EasyExcel进行了二次封装,提供了导入和导出功能,并支持模板的导入和导出。此外,还处理了读取数据与实际保存数据不一致的情况,通过提供自定义转换器来解决。
16 0
|
4天前
|
数据库
开发指南009-从list导出excel文件
从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法
|
4天前
|
前端开发
开发指南007-导出Excel
平台上开发导出Excel比过去的单体架构要复杂些,因为前端和后台不在一个进程空间里。
|
1月前
|
SQL Java easyexcel
【Java】百万数据excel导出功能如何实现
【Java】百万数据excel导出功能如何实现
126 0
|
2月前
|
Java
使用POI导出Excel
使用POI导出Excel