SXSSFworkbook创建sheet时无反应,界面导出.xlsx为空的问题排查

在使用SXSSFworkbook创建大量数据的Excel时,遇到程序卡在创建Sheet步骤且导出文件为空。该问题在不同服务器上偶发,经排查不是服务器环境、代码逻辑或Tomcat的temp目录权限问题。通过查看服务器日志发现错误信息`java.awt.AWTError`,原因是缺少头无模式设置。通过在Tomcat的startup.sh中添加`CATALINA_OPTS="-Djava.awt.headless=true"`,成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:大数据量导出excel时,用xlsx格式,在代码中加入日志打印,发现卡在代码SXSSFworkbook.createSheet()时,无其他异常打印;界面下载的excel显示为0KB,能打开,是空的;

背景:该服务使用tomcat部署的war包,在不同的服务器部署,偶现这个问题,自己的环境无法复现,无法debug;

再次有服务器出现这个问题后,进行了以下测试进行排除:
1.写了一个springboot服务,固定导出10条数据,在该环境运行。能导出数据,即排除服务器环境问题;
2.在war包的代码中加入了导出固定10条数据的接口,在该环境运行。导出文件大小为0,基本可以确认是由tomcat的配置导致的。
3.怀疑tomcat没有临时文件temp或没有权限写入,后来均排除;

问题的转机:
让同事把服务器上的tomcat全部打包发过来,准备在测试的服务器上部署,由于暂时没有服务器用(资源紧张),就自己先翻一翻里面的日志。原先基本所有操作基本日志、异常日志都是查看catalina.out,其他基本都没有有效信息;
在这里插入图片描述

看到localhost日志大小不为0,就点进去,然后发现了真相。

[Handler dispatch failed; nested exception is java.awt.AWT
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值