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


    场景

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

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

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

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

    这里的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 7777
    CMD java -jar /app/badao.jar

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

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

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

    FROM classmethod/oraclejdk-alpine-git:latest 
    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    轻量级Spring定时任务(Spring-task)
    Mysql语句优化建议
    python时间日期处理
    subprocess
    Tkinter初体验
    java基础
    java JVM
    NFV
    java加载properties文件的六种方法总结
    悲观锁和乐观锁的区别
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/15247790.html
Copyright © 2020-2023  润新知