Etc/TroubleShooting

리눅스 서버 엑셀 다운로드 실패

nyub 2023. 10. 5. 10:21
반응형

catalina 로그에서 발견된 에러는 아래와 같다.

 

2023-09-26 17:44:30,737 DEBUG [com.yesjnet.mapper.site.RecommendBookMapper.selectRecommendBookExcelList] <==      Total: 6

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)

        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)

        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

        at com.yesjnet.cmmn.filter.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:41)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)

        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)

        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)

        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

        at java.lang.Thread.run(Thread.java:748)

Caused by: java.lang.NullPointerException

        at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

        at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)

        at sun.awt.FontConfiguration.init(FontConfiguration.java:107)

        at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)

        at sun.font.SunFontManager$2.run(SunFontManager.java:441)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.font.SunFontManager.<init>(SunFontManager.java:386)

        at sun.awt.FcFontManager.<init>(FcFontManager.java:35)

        at sun.awt.X11FontManager.<init>(X11FontManager.java:57)

        at sun.reflect.GeneratedConstructorAccessor152.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

        at java.lang.Class.newInstance(Class.java:442)

        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)

        at java.security.AccessController.doPrivileged(Native Method)

        at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)

        at java.awt.Font.getFont2D(Font.java:491)

        at java.awt.Font.canDisplayUpTo(Font.java:2064)

        at java.awt.font.TextLayout.singleFont(TextLayout.java:470)

        at java.awt.font.TextLayout.<init>(TextLayout.java:531)

        at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)

        at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:250)

        at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:235)

        at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:501)

        at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:483)

        at com.yesjnet.cmmn.util.ExcelUtil.excelDownload(ExcelUtil.java:227)

        at com.yesjnet.cmmn.util.ExcelUtil.excelDownload(ExcelUtil.java:135)

        at com.yesjnet.site.recommend.web.RecommendBookController.bookExcelDown(RecommendBookController.java:124)

        at sun.reflect.GeneratedMethodAccessor865.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:498)

        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)

        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)

        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)

        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)

        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)

        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)

        ... 32 more

 

검색을 좀 해보니 FontConfiguration은 awt X11을 필요로 하는데, openjdk 설치 시 headless로 설치할 경우 X11은 포함하지 않은 채 설치하기 때문에 발생하는 문제.

결국 fontconfig가 없기때문인데 아래와 같이 설치하면 문제 해결이 가능하다.

sudo yum install fontconfig dejavu-sans-fonts dejavu-serif-fonts
반응형