问题描述:该系统已经在服务器上运行了一段时间了,没有问题,近期将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
简码笔记,让你的代码更加简约精炼。
转载请注明出处。