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月前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
127 8
|
7月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
76 0
|
4月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
61 1
|
4月前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
374 3
|
4月前
|
Java API Apache
|
4月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
234 4
|
5月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
257 6
|
6月前
|
SQL C# 数据库
EPPlus库的安装和使用 C# 中 Excel的导入和导出
本文介绍了如何使用EPPlus库在C#中实现Excel的导入和导出功能。首先,通过NuGet包管理器安装EPPlus库,然后提供了将DataGridView数据导出到Excel的步骤和代码示例,包括将DataGridView转换为DataTable和使用EPPlus将DataTable导出为Excel文件。接着,介绍了如何将Excel数据导入到数据库中,包括读取Excel文件、解析数据、执行SQL插入操作。
EPPlus库的安装和使用 C# 中 Excel的导入和导出
|
5月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
5月前
|
前端开发 JavaScript
💥【exceljs】纯前端如何实现Excel导出下载和上传解析?
本文介绍了用于处理Excel文件的库——ExcelJS,相较于SheetJS,ExcelJS支持更高级的样式自定义且易于使用。表格对比显示,ExcelJS在样式设置、内存效率及流式操作方面更具优势。主要适用于Node.js环境,也支持浏览器端使用。文中详细展示了如何利用ExcelJS实现前端的Excel导出下载和上传解析功能,并提供了示例代码。此外,还提供了在线调试的仓库链接和运行命令,方便读者实践。
665 5