目 录CONTENT

文章目录

记一次docker部署报错

在水一方
2022-07-29 / 0 评论 / 1 点赞 / 202 阅读 / 593 字 / 正在检测是否收录...

代码从uat环境测试通过后通过docker部署到生产环境时出错了,从错误提示来看是提示在使用easyexcel进行导出时报错了,提示如下,出现这个问题,代码层面并没有出现报错,一开始以为是uat环境jdk和生产版本的不同导致的,后面查看了一下,原来是docker的问题。本小结来梳理一下

报错提示:

java.lang.NoClassDefFoundError: sun.awt.X11FontManager

这种一般是出现在 docker部署,且使用了精简版的基础镜像,有多精简呢?精简到把字体都阉割掉了,
如果你的项目有字体相关操作,比如导出 excel,验证码,就会报上述异常。

对于一个Java服务器来说经常要处理一些图形元素,例如地图的创建或者图形和图表等。这些API基本上总是需要运行一个X-server以便能使用AWT(Abstract Window Toolkit,抽象窗口工具集)

处理方式:
在dockerfile中加上这个字体配置,把字体给安装上即可

问题解决:

容器环境下

FROM java:8

在构建镜像时安装字体,dockerfile增加命令:

RUN yum install dejavu-sans-fonts fontconfig -y

如果 container已经启动,又不想换,那就直接进到container,安装字体:

yum install dejavu-sans-fonts fontconfig -y
1

评论区