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 注释:依赖改成这个版本即...
docker中OpenJDK excel无法导出 java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion
1.背景说明:
本地使用的是jdk1.8版本功能可正常使用,当通过docker打包镜像部署到linux环境下(openJDK1.8)后无法导出excel,报初始化是否,空指针异常,报错如下:
2.原因:
openjdk比jdk1.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容器的稳定性和可靠性,确保应用程序的正常运行。