如题,在导入文件时候报错如下:
java
Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
经查是缺少对应字体,解决办法有两张:
第一种:重新在初始镜像里面安装对应字体,以后每次使用就行,具体方法可参考第二种方法
第二种:如果不想在初始镜像里面安装字体再重新生成镜像可使用如下方法:
上传字体文件到服务器:我这里使用的字体文件是 fontconfig-packages.tar.gz 这个安装包
在dockerfile里面配置,在容器启动时候 复制字体进容器,并安装对应字体
添加内容如下:
java
# libfreetype.so.6 是宿主机上面的文件 ,可在/usr/lib64/ 目录下面寻找
COPY fontconfig-packages/libfreetype.so.6 /usr/lib64/libfreetype.so.6
# libpng15.so.15 是宿主机上面的文件, 可在/usr/lib64/ 目录下面寻找
COPY fontconfig-packages/libpng15.so.15 /usr/lib64/libpng15.so.15
#复制刚刚上传的文件到容器/app/目录下面
COPY fontconfig-packages /app/
#执行安装字体需要文件
RUN rpm -ivh --nodeps *.rpm
安装完成后,可使用 ldconfig -p | grep freetype 命令,查看是否安装成功,成功后结果如下图所示

最下面是字体安装包下载链接: