You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下无法使用Apache POI的SXSSFWorkbook如何解决?

问题原因

这个错误是因为你用的Alpine Linux基础镜像默认没装libfreetype.so.6,而Apache POI的SXSSFWorkbook生成Excel时需要这个字体渲染依赖库;另外你的Dockerfile里ENTRYPOINT参数也有语法错误——重复写了-jar。

解决方案

方案一:给Alpine镜像补装缺失依赖

修改Dockerfile,添加安装依赖的步骤,同时修正ENTRYPOINT的参数问题:

# For Java 11
FROM adoptopenjdk/openjdk11:alpine-jre

# 安装字体相关依赖,解决libfreetype.so.6缺失问题
RUN apk add --no-cache freetype fontconfig

# Refer to Maven build -> finalName
ARG JAR_FILE=target/customer-service-0.0.1-SNAPSHOT.jar

WORKDIR /opt/app

COPY ${JAR_FILE} app.jar

# 修正ENTRYPOINT参数格式,去掉重复的-jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=prod", "-Xms512m", "-Xmx1024m", "-jar", "app.jar"]

方案二:换用非Alpine的JDK镜像

如果不想折腾Alpine的依赖,可以直接用Debian/Ubuntu基础的JDK镜像,这类镜像默认自带更多系统依赖:

# 换用Debian基础的OpenJDK 11镜像
FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-debian

ARG JAR_FILE=target/customer-service-0.0.1-SNAPSHOT.jar

WORKDIR /opt/app

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=prod", "-Xms512m", "-Xmx1024m", "-jar", "app.jar"]
验证步骤

修改完Dockerfile后,重新构建并运行容器:

docker build -t customer-service .
docker run -d --name customer-service customer-service

查看容器日志确认错误是否消失:

docker logs customer-service

内容的提问来源于stack exchange,提问作者Hikaru Shindo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 21:37:17