Docker中使用Dockerfile定制化jar启动时:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

摘要:
05:07:30.869[http-nio-7777-exec-2]INFOo.a.c.c.c.[.[/]-[log,173]-初始化SpringDispatcherServlet'dispatcherServlet'05:07:31.075[http-nio-7777-xec-2]ERRORc.r.f.w.e.GlobalExceptionHandler-[handleException,83]-nulljava.lang.NullPointerException:nullatsun.awt.FontConfiguration.getVersionatsun.awt.FontConfiguration.readFontConfigFileatsun.awt.FontConfigure.initatsun.awt.X11FontManager.createFontConfigrationatsun.font.SunFontManager$2.runatjava.security.AccessController.doPrivilegedatsun.font.SunFont Manager.atsun.aft.FcFontManager。NativeConstr构造函数访问器Impl.newInstance0atsun。反映NativeConstructorAccessorImpl.newInstanceatsun。反映委托ConstructorAccessorImpl.newInstanceatjava。语言反射。建造商。newInstanceatjava。语言等级。newInstanceatsun。字体。FontManagerFactory$1.runatjava。安全访问控制器。doPrivilegedatsun。字体。字体管理器工厂。getInstanceatjava。啊。字体。getFont2Datjava。啊。字体nt。access$000注:Bo客人:https://blog.csdn.net/badao_liumang_qizhi在官方账户上跟随专横的程序类人猿,获取与编程相关的电子书、教程和免费下载。这是因为项目需要使用图形验证码。
场景

CentOS7中使用Dockerfile部署后台jar包:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119818808

在上面使用Dockfile部署带后台jar包的镜像时提示:

at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)

Docker中使用Dockerfile定制化jar启动时:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)第1张

这里的jar包使用的是若依前后端分离版的后台jar包。

本地搭建流程可以参照

若依前后端分离版手把手教你本地搭建环境并运行项目:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662

在调用他的验证码接口时提示如下错误。

05:07:30.869 [http-nio-7777-exec-2] INFO o.a.c.c.C.[.[.[/] - [log,173] - Initializing Spring DispatcherServlet 'dispatcherServlet'
05:07:31.075 [http-nio-7777-exec-2] ERROR c.r.f.w.e.GlobalExceptionHandler - [handleException,83] - null
java.lang.NullPointerException: null
at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
at sun.font.SunFontManager$2.run(SunFontManager.java:431)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<init>(SunFontManager.java:376)
at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.access$000(Font.java:224)

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

这是因为项目中需要使用图形验证码。

主要原因是字体问题,需要在Dockfile文件中添加下面一条

RUN apk add --update ttf-dejavu fontconfig

添加之后的文件内容为

FROM openjdk:8-jdk-alpine
MAINTAINER "badaodechengxvyuan"LABEL description="公众号-霸道的程序猿"WORKDIR app
ADD ruoyi-admin.jar /app/badao.jar
RUN apk add --update ttf-dejavu fontconfig
EXPOSE 7777CMD java -jar /app/badao.jar

然后删除原来的容器和镜像,重新进行构建

Docker中使用Dockerfile定制化jar启动时:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)第2张

等待构建成功之后再重新运行后即可。

网上也有说可以基础镜像不用openjdk,而改用oraclejdk的基础镜像

FROM classmethod/oraclejdk-alpine-git:latest 

免责声明:文章转载自《Docker中使用Dockerfile定制化jar启动时:at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql 获取数据库表名与某表的列名叠筐【打印】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker挂载的目录无法读写

使用下面的命令可以创建一个容器并且把本地的/home/dock/Downloads目录挂载到容器中的/usr/Downloads中 [root@docker ~]# docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu /bin/bash 在Centos上创建完后,会出现如下问题 root...

使用Docker构建redis集群--最靠谱的版本

1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点。因此要构建六个redis的docker容器。在宿主机中将这六个独立的redis结点关联成一个redis集群。需要用到官方提供的ruby脚本。 2构建redis基础镜像 本文选择版本为redis-3.0.7,如果需要其他版本,直接修改wget后面地址中的版本号即可。 代码清单2-1 下载&...

DevOps开发运维与持续集成相关知识

https://blog.csdn.net/boonya/article/details/74932050?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158976841719725256735968%2522%252C%2522scm%2522%253A%252220140713.130...

修改docker 容器的存储地址 &amp;amp; docker &amp;amp; container &amp;amp; wsl &amp;amp; win10

HowTo: Change Docker containers storage location with WSL2 on Windows 10 Once I started playing with Docker on Windows it quickly turned out that latest version heavily rely on WS...

@font-face在vue中的使用

在项目中使用指定字体应该是正常操作了。可以使用css3新增的font-face这个属性来搞事情 在vue项目中如何使用,额,我写了以下几种方式:  在这之前要说下写上面的代码时碰到的问题 format('truetype') 我之前也是网上复制粘贴,被误导写成了 format('ttf') 发现字体不生效,然后把format这个标识符去掉,发现又生效了。...

Mac下用docker配置PHP环境杂记

1.下载官方镜像 docker pull nginx docker pull bitnami/php-fpm 2.启动容器 docker run -d --name myFpm -p -v 此处为宿主机文档目录:/app bitnami/php-fpm docker run -d --name myNginx -p 80:80 -v 此处为宿主机文档目...