EasyExcel部署Docker缺少字體報錯

報文

java.lang.NullPointerException: nullat 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:431)at java.security.AccessController.doPrivileged(Native Method)at sun.font.SunFontManager.<init>(SunFontManager.java:376)at sun.awt.FcFontManager.<init>(FcFontManager.java:35)at sun.awt.X11FontManager.<init>(X11FontManager.java:57)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)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:2060)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:273)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:684)at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:705)at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:88)at com.alibaba.excel.util.WorkBookUtil.createSheet(WorkBookUtil.java:86)at com.alibaba.excel.context.WriteContextImpl.createSheet(WriteContextImpl.java:223)at com.alibaba.excel.context.WriteContextImpl.initSheet(WriteContextImpl.java:203)at com.alibaba.excel.context.WriteContextImpl.currentSheet(WriteContextImpl.java:135)at com.alibaba.excel.write.ExcelBuilderImpl.addContent(ExcelBuilderImpl.java:54)at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:73)at com.alibaba.excel.ExcelWriter.write(ExcelWriter.java:50)at com.alibaba.excel.write.builder.ExcelWriterSheetBuilder.doWrite(ExcelWriterSheetBuilder.java:62)at com.zhjs.service.adminApi.impl.OrdersServiceImpl.getOrdersByTimeDownload(OrdersServiceImpl.java:856)at com.zhjs.service.adminApi.impl.OrdersServiceImpl$$FastClassBySpringCGLIB$$38a1f102.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704)at com.zhjs.service.adminApi.impl.OrdersServiceImpl$$EnhancerBySpringCGLIB$$c27489a.getOrdersByTimeDownload(<generated>)at com.zhjs.controller.adminApi.OrdersController.getOrdersByTimeDownload(OrdersController.java:135)at com.zhjs.controller.adminApi.OrdersController$$FastClassBySpringCGLIB$$c39ae25c.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 org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)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.zhjs.controller.adminApi.OrdersController$$EnhancerBySpringCGLIB$$9ed1605c.getOrdersByTimeDownload(<generated>)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)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:1071)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)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:696)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)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.CorsFilter.doFilterInternal(CorsFilter.java:91)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:893)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)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)

在本地測試沒問題,部署到Docker就導出報錯。
原因:這是一個典型的 Java AWT / 字體渲染相關的異常,原因跟 服務器環境(無圖形環境)下使用自動列寬計算 相關。
找了很多資料,有很多方法,而我也嘗試了很多,最終解決更換了jdk。之前使用的是openjdk:8-jdk-alpine,換成了支持有字體的openjdk:oraclelinux8,然后重新打包部署就可以正常導出了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96551.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96551.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96551.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從“收款工具”到“智能中樞”:AI如何重構POS系統的技術架構與商業價值?

引?:從交易終端到智能中樞的?字路? 在現代商業的繁忙圖景中 ,銷售點( Point of Sale, POS) 系統?期以來被視為交易流程的終點 ——?個簡單完成收款、打印票據的?具。然? ,這?認知正在被迅速顛覆。 隨著數字經濟的深 化 ,POS系統已演變為連接顧客、 商品與服務的…

unity以戰斗截圖并加上微信二維碼分享

開發游戲時&#xff0c;會遇到戰斗結算&#xff0c;成就等獎勵界面&#xff0c;鼓勵玩家分享到朋友圈&#xff0c;這時通常會在圖片上加上一些內容&#xff0c;比如游戲Logo&#xff0c;二維碼下載等內容。現在分享一下我制作游戲分享圖片的過程。第一步首先截圖&#xff0c;截…

新手向:實現驗證碼程序

本文將從零開始&#xff0c;通過一個簡單的驗證碼程序。即使你沒有任何編程基礎&#xff0c;也能跟著這篇文章一步步學習。第一章&#xff1a;Java開發環境搭建1.1 安裝JDK要開始Java編程&#xff0c;首先需要安裝Java開發工具包(JDK)。JDK是Java開發的核心環境&#xff0c;包含…

使用Flask實現接口回調地址

使用Flask實現接口回調地址 一、接口回調的基本概念 接口回調&#xff08;Callback&#xff09;是一種異步通信機制&#xff0c;當某個事件發生時&#xff08;如支付完成、任務結束&#xff09;&#xff0c;服務提供方會主動調用預先配置的URL&#xff08;即回調地址&#xff0…

vue2+jessibuca播放h265視頻

文檔地址&#xff1a;http://jessibuca.monibuca.com/api.html#background 1,文件放在public中 2,在html中引入 3&#xff0c;子組件 <template><div :id"container id"></div> </template><script> export default {props: [url,…

Behavioral Fingerprinting of Large Language Models

Behavioral Fingerprinting of Large Language Models Authors: Zehua Pei, Hui-Ling Zhen, Ying Zhang, Zhiyuan Yang, Xing Li, Xianzhi Yu, Mingxuan Yuan, Bei Yu Deep-Dive Summary: 行為指紋識別大型語言模型 摘要 當前的大型語言模型&#xff08;LLMs&#xff09;基…

某互聯網大廠的面試go語言從基礎到實戰的經驗和總結

### 一面 #### 1. **實習項目**- 可以簡要描述你的項目經歷&#xff0c;最好是與職位相關的項目。如果是與技術棧相關的項目&#xff0c;比如 Go、C、Golang 或 Python&#xff0c;重點講述項目中的技術細節和你如何解決問題。#### 2. **Go學習多久**- 說明你學習 Go 語言的時間…

掌握Java控制流:編程決策的藝術

控制流語句是用來 控制程序執行順序 的關鍵工具&#xff0c;它們允許你根據不同的條件執行不同的代碼塊&#xff0c;或者重復執行某段代碼。這使得程序能夠根據輸入和情況做出智能的決策&#xff0c;而不僅僅是線性的執行。1. 條件語句 (Conditional Statements)條件語句允許你…

Docker 安裝 MySQL 和 Redis 完整指南

前言 在開發環境中,使用 Docker 安裝數據庫服務是一種快速、便捷的方式。本文將詳細介紹如何在 macOS 上使用 Docker 安裝 MySQL 和 Redis,并解決國內網絡訪問 Docker Hub 的問題。 環境準備 macOS 系統 Docker Desktop 已安裝 網絡連接 配置 Docker 國內鏡像源 方法一:通…

Spring Boot---自動配置原理和自定義Starter

1.自動配置原理2.自定義starter①dmybatis-spring-boot-autoconfigure步驟一&#xff1a;先創建項目步驟二&#xff1a;導入響應的依賴步驟三&#xff1a;創建自動配置的配置類步驟四&#xff1a;創建配置文件項目結構②dmybatis-spring-boot-starter步驟一&#xff1a;先創建項…

【后端】MySQL 常用 SQL 語句大全

整理一份 MySQL 常用 SQL 語句大全&#xff0c;從基礎操作到進階查詢&#xff0c;都涵蓋。方便日常開發和學習參考。1. 數據庫操作-- 查看所有數據庫 SHOW DATABASES;-- 創建數據庫 CREATE DATABASE db_name;-- 刪除數據庫 DROP DATABASE db_name;-- 使用數據庫 USE db_name;--…

[iOS] 單例模式的深究

文章目錄前言一、什么是單例模式二、單例模式的優缺點優點缺點三、模式介紹1.懶漢模式&#xff08;GCD & 互斥鎖&#xff09;GCD 寫法互斥鎖寫法&#xff08;雙重檢查鎖&#xff09;2.餓漢模式總結懶漢式 互斥鎖&#xff08;Mutex&#xff09;**懶漢式 GCD (dispatch_onc…

解決Discord.py中的/help命令問題

在使用Discord.py開發機器人時,常常會遇到一些常見的問題,比如命令找不到或者命令功能不符合預期。本文將詳細探討如何解決在使用@bot.slash_command定義/help命令時遇到的問題,并提供一個完整的實例來展示如何正確設置這個命令。 問題描述 當你在Discord機器人中輸入/hel…

解決VSCode默認F5配置無法啟動調試器的問題

前幾天做筆試&#xff0c;最后一題代碼有點問題&#xff0c;習慣性地按了個F5啟動gdb發現居然爆炸了&#xff0c;報錯找不到編譯出來的二進制文件&#xff0c;看著像是默認配置的問題&#xff0c;由于時間緊迫最后只能用輸出大法解決。 感覺不可理喻&#xff0c;幾年前調程序的…

webrtc弱網-LossBasedBweV2類源碼分析與算法原理

1. 核心功能LossBasedBweV2是WebRTC Google Congestion Control (GoogCC) 算法套件中的第二代基于丟包的帶寬估計器。它的核心功能是&#xff1a;帶寬估計&#xff1a; 根據網絡數據包的丟失情況&#xff0c;估算當前網絡路徑可用的帶寬上限。其核心假設是&#xff1a;當發送速…

AI代理化檢索:智能信息獲取新范式

代理化檢索(Agentic Retrieval)是一種由AI代理自主管理的信息檢索范式,通過動態規劃、工具調用和多步推理提升復雜查詢的處理能力。其核心機制、技術實現和應用特點如下: 一、核心機制 自主決策循環 代理通過循環執行"規劃-行動-觀察"流程處理查詢: 規劃階段:…

Android Studio中的各種Java版本區別

Android Studio中的各種Java版本 創建一個項目&#xff0c;app模塊的build.gradle.kts默認配置如下&#xff1a; plugins {alias(libs.plugins.android.application)alias(libs.plugins.kotlin.android) }android {namespace "cn.android666.javaversiontest"comp…

ubuntu新增磁盤擴展LV卷

登錄平臺 login as: wqbboy wqbboy172.17.2.86s password: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-153-generic x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/proSyst…

Day 16: GAN生成對抗網絡專項 - 從博弈論到藝術創作的完整之旅

Day 16: GAN生成對抗網絡專項 - 從博弈論到藝術創作的完整之旅 ?? 學習目標: 深度掌握生成對抗網絡理論與實踐,從博弈論基礎到風格遷移應用的完整技術棧 ? 學習時長: 6小時深度學習 (理論3小時 + 實踐3小時) ?? 技術棧: PyTorch + 數學推導 + 經典架構 + 實戰應用 ?? 核…

《QT 108好類》之16 QComboBox類

《QT 108好類》之16 QComboBox類QT 108好類之16 QComboBox類QComboBox類特性和應用場景QComboBox類繼承關系QComboBox類使用1 簡單使用2 表單輸入3 使用自定義模型和視圖4 完全自定義彈出窗口QComboBox類類使用效果QT 108好類之16 QComboBox類 QComboBox是 常用的下拉框&#…