В настоящее время я использую Apache POI для создания большого файла Excel с SXSSFWorkbook.
Когда я запускаю проект локально, он не выдает никакой ошибки, однако при развертывании его на моем сервер с Tomcat 9 выдает следующую трассировку стека:
Exception
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE
java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:129)
java.desktop/sun.awt.X11FontManager.isHeadless(X11FontManager.java:464)
java.desktop/sun.awt.X11FontManager.getFontPath(X11FontManager.java:732)
java.desktop/sun.font.SunFontManager.getPlatformFontPath(SunFontManager.java:3169)
java.desktop/sun.font.SunFontManager$10.run(SunFontManager.java:3191)
java.base/java.security.AccessController.doPrivileged(Native Method)
java.desktop/sun.font.SunFontManager.loadFonts(SunFontManager.java:3187)
java.desktop/sun.awt.X11FontManager.loadFonts(X11FontManager.java:438)
java.desktop/sun.font.SunFontManager.findFont2D(SunFontManager.java:2220)
java.desktop/java.awt.Font.getFont2D(Font.java:506)
java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2250)
java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:273)
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)
org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:684)
org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:247)
org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:211)
org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:186)
org.apache.poi.xssf.streaming.SXSSFWorkbook.<init>(SXSSFWorkbook.java:161)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Я также пробовал это решение, но безуспешно ни с System.setProperties, ни с JAVA_OPTS
РЕДАКТИРОВАТЬ 1: Я только что заметил, что эта ошибка возникает, только если я использую SXSSFWorkbook, в то время как при использовании Workbook это не дает мне никакой ошибки. Однако мне все еще нужно использовать SXSSFWorkbook для его производительности.
Есть предложения? Заранее спасибо