JAVA 用POI导出excel ,在windows可以正常导出,但是到了linux服务器就会报错

当使用JAVA的POI库在Windows上导出Excel文件没有问题,但在Linux服务器上执行时会报错,原因是系统缺少相应的字体。解决方案是通过安装fontconfig并运行fc-cache--force命令来更新字体缓存,从而解决问题。
摘要由CSDN通过智能技术生成

JAVA 用POI导出excel ,在windows可以正常导出,但是到了linux服务器就会报错

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException

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

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

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

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

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

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

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

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

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

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

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

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

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)

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

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

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

at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)

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

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)

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

at java.base/java.lang.Thread.run(Thread.java:833)

Caused by: java.lang.InternalError: java.lang.reflect.InvocationTargetException

at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:87)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)

at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:75)

at java.desktop/java.awt.Font.getFont2D(Font.java:526)

at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2282)

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:79)

at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:652)

at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:673)

at com.pmis.risk.riskmanage.utils.ExcelUtils.export(ExcelUtils.java:723)

at com.pmis.risk.riskmanage.utils.ExcelUtils.export(ExcelUtils.java:690)

at com.pmis.risk.riskmanage.utils.ExcelUtils.export(ExcelUtils.java:672)

at com.pmis.risk.riskmanage.utils.ExcelUtils.export(ExcelUtils.java:708)

at com.pmis.risk.riskmanage.service.impl.TRiskInfoServiceImpl.exportTRiskInfo(TRiskInfoServiceImpl.java:769)

at com.pmis.risk.riskmanage.service.impl.TRiskInfoServiceImpl$$FastClassBySpringCGLIB$$1dbf0944.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)

at com.pmis.boot.dynamic.datasource.aop.DynamicDataSourceTransactionInterceptor.invoke(DynamicDataSourceTransactionInterceptor.java:23)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)

at com.pmis.risk.riskmanage.service.impl.TRiskInfoServiceImpl$$EnhancerBySpringCGLIB$$f53151e0.exportTRiskInfo(<generated>)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:568)

at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)

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

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

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)

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

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

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

... 39 common frames omitted

Caused by: java.lang.reflect.InvocationTargetException: null

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)

at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)

at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)

at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:85)

... 76 common frames omitted

Caused by: java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null

at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)

at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:224)

at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:106)

at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:706)

at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:358)

at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:315)

at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)

at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:315)

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

at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)

... 82 common frames omitted

报错信息

解决方法:

看到这里,一个是linux系统缺少相应的字体。安装相应的字体即可解决。(因为windows是有的所以在windows下是好使的,到linux就不好使了)

赋值命令直接粘贴到linux下运行就可以了!!!!

yum install fontconfig

fc-cache --force

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值