栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间:发布时间: 百科书网 趣学号

 问题描述:该系统已经在服务器上运行了一段时间了,没有问题,近期将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.(TextLayout.java:530)
		at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)
		at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.(AutoSizeColumnTracker.java:117)
		at org.apache.poi.xssf.streaming.SXSSFSheet.(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


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

转载请注明出处。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/276396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号