添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

docker中OpenJDK验证码无法显示 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion

最新推荐文章于 2024-01-11 21:06:20 发布
最新推荐文章于 2024-01-11 21:06:20 发布 阅读量3.2k

1.情况说明

自己开发项目的时候都是基于OracleJDK 1.8来做的,图片验证码可以正常显示。但是发布到docker更换成OpenJDK1.8后,
验证码无法显示,后台代码抛出异常,就是各种工具类没有找到没有初始化,异常内容如下,
在这里插入图片描述

openjdk比oraclejdk简化了一些功能,所以用docker打包的时候更小。
所以后端画的验证码所要用到java的awt组件就被简化了,就一堆的空指针无法初始化错误报出来。

3.解决方法

1.笔者使用的是centos7系统,需要在系统中安装FontConfig组件。

yum install fontconfig

2.修改dockerfile
修改前:

FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.s  ecurity.egd=file:/dev/./urandom","-jar","/app.jar"]
FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig
ENTRYPOINT ["java","-Djava.s  ecurity.egd=file:/dev/./urandom","-jar","/app.jar"]

4.重启docker容器

docker restart 容器ID或容器名
                    docker中OpenJDK验证码无法显示 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion
                    1.情况说明自己开发项目的时候都是基于OracleJDK 1.8来做的,图片验证码可以正常显示。但是发布到docker更换成OpenJDK1.8后,验证码无法显示,后台代码抛出异常,就是各种工具类没有找到没有初始化,异常内容如下,2.原因openjdk比oraclejdk简化了一些功能,所以用docker打包的时候更小。所以后端画的验证码所要用到java的awt组件就被简化了,就一堆的空指针无法初始化错误报出来。3.解决方法1.笔者使用的是centos7系统,需要在系统中安装FontConf
				
1.问题复现 在开发时本地使用oraclejdk开发,可正常显示验证码,使用docker打包时,为了降低包大小,切换为openjdk,上线后发现验证码无法正常显示,且后台显示以下异常: java.lang.NullPointerException: null at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:126...
Dockerfile内容如下: FROM openjdk:8-jdk-alpine RUN apk add --update --no-cache ttf-dejavu fontconfig && rm -rf /var/cache/apk/* RUN apk add --no-cache bash COPY app.jar /app.jar ENV JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev
原因是因为大部分的docker打包教程给予的项目docker配置文件jdk依赖都不是完整版,导致会有一些包没有 所以会导致标题之类的问题 搭建教程:https://blog.csdn.net/yjt520557/article/details/99715097 如果出现这个情况 将docker的配置文件改为下图 FROM java:8 注释:依赖改成这个版本即...
dockerOpenJDK excel无法导出 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion 1.背景说明: 本地使用的是jdk1.8版本功能可正常使用,当通过docker打包镜像部署到linux环境下(openJDK1.8)后无法导出excel,报初始化是否,空指针异常,报错如下: 2.原因: openjdkjdk1.8简化了一些功能,所以用docker打包的时候更小。excel导出时初始化失败就是因为f
Docker是一种开源的应用容器化技术,它能够高效地创建、发布和部署应用程序。然而,在使用Docker过程有时会出现“handler dispatch failed; nested exception is java.lang.OutofMemoryError”的报错信息。 这个报错信息告诉我们,在处理Docker容器的请求时,发生了故障。其的嵌套异常是“java.lang.OutOfMemoryError”,也就是内存不足,说明Docker容器分配的内存空间不够用。 要解决这个问题,我们可以采取以下几种方法: 1. 增加Docker容器的内存 可以通过修改Docker容器的启动参数来增加内存容量,例如将“--memory”参数的值从默认的64M修改为更高的数值。 2. 优化Docker容器的资源利用率 可以通过优化Docker容器内部的应用程序和服务,减少内存和CPU的占用,从而降低内存压力和资源竞争。 3. 更新Docker版本 Docker版本的更新可能会修复一些内存泄漏和(或)资源管理问题,从而改善容器性能。 总之,要解决“handler dispatch failed; nested exception is java.lang.OutOfMemoryError”这个问题,需要针对具体情况进行分析和优化。这将有助于提高Docker容器的稳定性和可靠性,确保应用程序的正常运行。