Apache Ошибка POI на сервере, но не в IDE - PullRequest
0 голосов
/ 01 апреля 2020

В настоящее время я использую 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 для его производительности.

Есть предложения? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...