如何解决docker运行Java程序导出Excel中文报错的问题?
前言
使用openjdk:17-jdk-slim基础镜像运行Java程序,导出Excel的时候报错。
导出时错误内容如下
java.lang.UnsatisfiedLinkError: /usr/local/openjdk-17/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory
java.lang.InternalError: java.lang.reflect.InvocationTargetException
前期准备,需要安装好docker。
一、进入程序运行的容器
1、进入容器,执行命令如下。
# project替换为容器id或容器名称
docker exec -ti project bash
二、配置apt加速
1、进入apt配置路径,执行命令如下。
cd /etc/apt/
2、备份原来的配置,以备失败后可以回滚,执行命令如下。
cp sources.list sources.list.bak
3、写入阿里云镜像配置,执行命令如下。
# 因为openjdk:17-jdk-slim未安装vim编辑器,所以使用echo直接写入替代
echo "deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free" > sources.list && echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free" >> sources.list && echo "deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free" >> sources.list
4、验证更新后的镜像,执行命令如下。
apt-get update
执行效果如下图所示。
5、至此,配置apt加速已完成。
三、安装依赖
1、执行命令如下。
apt-get update && apt-get install -y libfreetype6 libfontconfig1 fonts-dejavu fonts-dejavu-core
2、至此,导出Excel的本地相关依赖以及字体已安装完成,接下来就是测试验证呢。
总结
因为使用openjdk:17-jdk-slim基础镜像运行Java程序,导出Excel的时候报错,需要安装本地相关依赖以及字体,但是过程中又遇到更新依赖不成功的问题,需要给apt加速,总结步骤如下。
1、进入程序容器。
2、配置apt加速。
3、安装依赖。