使用easyExcel上传至Linux服务器出现空指针
2021/11/23 7:14:22
本文主要是介绍使用easyExcel上传至Linux服务器出现空指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.首先是报错截图
2。代码内容
public String writeExcel(String updateTime) { // 获取文件生成路径 String fileName = PATH + "/staff-vacation" + updateTime + ".xlsx"; List<DataDTO> dataDTOS = null; try { dataDTOS = users.selectAll(updateTime); for (DataDTO dataDTO : dataDTOS) { if(null== dataDTO.getOpenid()||""== dataDTO.getOpenid()){ dataDTO.setOpenid("*"); } if(null== dataDTO.getDeleted()||""== dataDTO.getDeleted()){ dataDTO.setDeleted("0"); } if(null== dataDTO.getUpdateUser()||""== dataDTO.getUpdateUser()){ dataDTO.setUpdateUser("*"); } } } catch (Exception e) { log.error("文件转换异常", e); } log.info("文件存储路径:============="+fileName); // 把数据库的数据放到EXCEl表格中 EasyExcel.write(fileName, DataDTO.class).sheet("staff_vacation").doWrite(dataDTOS); return fileName;
3.排错思路
一开始出现空指针是因为数据库里面有脏数据,解决后上传到服务器发现问题还会存在,通过查看日志发现是从数据库查出文件后出现的空指针,没有对数据进行写入Excel操作。
首先确定路径没问题后,在代码中对写入文件单独抛异常后发现正常运行,发现就是写入文件的问题,What!!!!写入怎么会出错呢,本地跑是没问题的。经过一番百度后,确定了问题的所在:
- easyExcel和POI的jar包不兼容
Easyexcel的使用,选对版本很重要,不然会报错。官方推荐的版本清单如下:
poi版本:3.17及以上
easyexcel版本:建议使用2.0.x及以上
本文的讨论及代码,基于以下版本:
poi版本:3.17
easyexcel版本:建议使用2.0.6及以上
1. EasyExcel mac或者windows下导出EXCEL正常,Linux服务器下NullPointerException
经过了解,知道是因为alpine中缺少FontConfiguration,那么就考虑安装ttf-dejavu这个软件。
在这篇博客找到了解决办法。
在服务器适当位置位置创建一个Dockerfile,内容为:
FROM java:8-jre-alpine # Install cURL RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main\n\ https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/community" > /etc/apk/repositories RUN apk --update add curl bash ttf-dejavu && \ rm -rf /var/cache/apk/*
在同一位置执行:
docker build -t docker.io/java-font:8-jre-alpine .
执行完毕后会有一个新的java的镜像:
REPOSITORY IMAGE ID CREATED SIZE docker.io/java-font 8-jre-alpine dc7703ec6f07 31 hours ago 131.5 MB
再次构建项目的时候使用新的jdk镜像即可解决问题。
这篇关于使用easyExcel上传至Linux服务器出现空指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南