开发时导出没问题,使用docker容器运行程序导出报错
NoClassDefFoundError: Could not initialize class sun.awt.X11FontManage
解决方案:在构建docker镜像时添加以下命令
RUN yum install dejavu-sans-fonts fontconfig -y
RUN chmod +x ./service4096.sh
RUN chmod +x ./wait-for-it.sh
RUN yum install dejavu-sans-fonts fontconfig -y
优化在构建jdk镜像时 执行
RUN yum install dejavu-sans-fonts fontconfig -y
构建jdk的dockerfile文件
# 建立一个新的镜像文件,配置模板:新建立的镜像是以centos为基础模板
# 因为jdk必须运行在操作系统之上
FROM centos:7.9.2009
# 作者名
MAINTAINER yuanhang
# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-11_linux-x64_bin.tar.gz /usr/local/java/
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#解决 docker容器运行程序导出报错
RUN yum install dejavu-sans-fonts fontconfig -y
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11
ENV PATH $JAVA_HOME/bin:$PATH
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp