Linux系统部署Tomcat 无法使用POI导出Excel的问题

在将CentOS系统从物理服务器迁移到虚拟机后,遇到两个问题:1. 数据不全且有时不一致,原因是新旧服务器使用了相同IP地址;2. Excel导出功能失效,日志显示与图形环境相关错误。解决方案是关闭旧服务器,调整新服务器IP,并在Tomcat配置中添加'CATALINA_OPTS=-Djava.awt.headless=true'参数,成功解决问题。
摘要由CSDN通过智能技术生成

 问题描述:该系统已经在服务器上运行了一段时间了,没有问题,近期将CentOS迁移到了虚拟机中,重新安装的,再使用的时候遇到了2个问题。

1. 数据不全,这个问题有点儿诡异

2. 导出Excel按钮没有反应

问题1研究:代码翻了个底儿掉,没问题啊,数据为什么会不全,而且有时候还不一致!!

码农的第一反应就是软件(包括系统软件)出了问题,Linux时间和Windows不统一??

数据库数据查着跟页面显示就不同!!而且在我查问题的时候数据库数据突然变了!!!

我晕,中毒了???

经过分析中毒的可能性低,别的数据都没问题啊,就这一个常用的表数据有问题。

想让运维小哥恢复一下数据库,就在此时我突然想到了一个问题,服务器搭的是不是有问题?

我去机房溜达了一圈,果然发现了问题,旧的服务器没关,新的服务器和旧的用的同一个IP地址。

呵呵....问题发现了自然就解决了,将数据合并一下,旧服务关掉,贴上签,我墙裂推荐贴签的做法!!

至此,第一个问题解决。

第二个问题:Excel原来是可以导出的,肯定也是服务器设置的问题,打开日志看一下,如下:

28-Sep-2021 09:20:25.531 严重 [http-nio-80-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [spring-mvc] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE] with root cause
	java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE
		at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:129)
		at java.desktop/sun.awt.X11FontManager.isHeadless(X11FontManager.java:464)
		at java.desktop/sun.awt.X11FontManager.getFontPath(X11FontManager.java:732)
		at java.desktop/sun.font.SunFontManager.getPlatformFontPath(SunFontManager.java:3166)
		at java.desktop/sun.font.SunFontManager$10.run(SunFontManager.java:3188)
		at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
		at java.desktop/sun.font.SunFontManager.loadFonts(SunFontManager.java:3184)
		at java.desktop/sun.awt.X11FontManager.loadFonts(X11FontManager.java:438)
		at java.desktop/sun.font.SunFontManager.findFont2D(SunFontManager.java:2217)
		at java.desktop/java.awt.Font.getFont2D(Font.java:506)
		at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2245)
		at java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
		at java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
		at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)
		at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
		at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)
		at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:658)
		at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:650)
		at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:90)

重点报错:java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE

分析原因:可能是服务器上没有安装图形界面,或者不支持office所致。

解决办法:

找到Tomcat安装目录,在tomcat配置文件catalina.sh文件中添加 CATALINA_OPTS="-Djava.awt.headless=true"

我的问题至此就解决了,还有问题的话可以参考以下链接:https://blog.csdn.net/luyinxing1/article/details/99981694


简码笔记,让你的代码更加简约精炼。

转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简码笔记

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值