Linux下java验证码不显示:Could not initialize class sun.awt.X11FontManager
一、问题
javaweb项目,登录的时候有个图片验证码的功能。在Windows本地测试能够正常显示,部署到Linux上就不行了。报错如下:
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError:
Could not initialize class sun.awt.X11FontManager

二、解决
经查,与这个有关:
1.什么是Headless mode?
Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。2.何时使用和headless mode?
Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。3.如何使用和Headless mode?
一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来:
System.setProperty("java.awt.headless","true")
第一步:在tomcat/bin/catalina.sh文件中增加一行配置,并且重启tomcat
#解决登录验证码图片显示不了的bug
CATALINA_OPTS=-Djava.awt.headless=true

然后还是不行,还是会报错:没有这个依赖 libgcc_s.so.1
org.springframework.web.util.NestedServletException: Handler processing failed;
nested exception is java.lang.UnsatisfiedLinkError: /usr/src/java/jdk/jdk1.7.0_71/jre/lib/i386/libfontmanager.so: libgcc_s.so.1: cannot open shared object file: No such file or directory
第二步:运行如下命令,重启tomcat即可
[root@mail tomcat7-8080]# yum install libgcc.i686 --setopt=protected_multilib=false
[root@mail tomcat7-8080]# yum grouplist
[root@mail tomcat7-8080]# yum groupinstall Fonts

三、 另外一种解决方案
生成图片的java文件里写:
public class RandomNumUtil {
static{
System.setProperty("java.awt.headless", "true");
}
}
四、参考
https://blog.csdn.net/weixin_34381666/article/details/91900916
https://www.cnblogs.com/hwaggLee/p/5454463.html
https://www.cnblogs.com/wudi-dudu/p/7792721.html
Linux下java验证码不显示:Could not initialize class sun.awt.X11FontManager的更多相关文章
- Linux下验证码无法显示,Could not initialize class sun.awt.X1 解决方案
环境:Oracle Linux 6.4,JDK1.6,Weblogic11g 在通过java.awt生成图片验证码时,提示: Could not initialize class sun.awt.X1 ...
- 解决Linux下Jexus验证码无法显示
1:安装mono相关字体 yum install -y dejavu-fonts-common dejavu-lgc-sans-mono-fonts 2:重启jexus /usr/jexus/jws ...
- linux下验证码无法显示:Could not initialize class sun.awt.X1 解决方案
转自:http://my.oschina.net/xiangtao/blog/28441 网站验证码突然无法显示,并报如下错误. Caused by: java.lang.NoClassDefFoun ...
- linux下java调用.so文件的方法1: JNI
摘自http://blog.163.com/squall_smile/blog/static/6034984020129296931793/ https://my.oschina.net/simabe ...
- JDK问题--linux下java unrecognized class file version错误的解决
linux下java unrecognized class file version错误的解决 环境:RedHat Linux Enterprise 5.4 问题:java.sun.com下载jdk1 ...
- Linux下java/bin目录下的命令集合
Linux下JAVA命令(1.7.0_79) 命令 详解 参数列表 示例 重要程度 资料 appletviewer Java applet 浏览器.appletviewer 命令可在脱离万维网浏览器环 ...
- linux下java调用C
linux下java调用C 分类: linux2012-05-22 09:12 1529人阅读 评论(0) 收藏 举报 javalinuxmakefilegccclasscommand 下面是在ubu ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- linux下Java环境的配置
linux下Java环境的配置 现在用linux的朋友越来越多了,前几天就有两个朋友问我linux下怎么配置java环境,我想还有很多朋友想了解学习这方面的东西,就写一个完全一点的linux java ...
随机推荐
- 02Javascript变量和数据类型
1. 变量概述 1.1 什么是变量 通俗:变量是用于存放数据的容器. 我们通过 变量名 获取数据,甚至数据可以修改. 1.2 变量在内存中的存储 本质:变量是程序在内存中申请的一块用来存放数据的空间. ...
- uni-app自定义Modal弹窗组件|仿ios、微信弹窗效果
介绍 uniapp自定义弹窗组件uniPop,基于uni-app开发的自定义模态弹窗|msg信息框|alert对话框|confirm确认框|toast弱提示框 支持多种动画效果.多弹窗类型ios/an ...
- Cesium-空间分析之通视分析(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- 阿里云centos7安装python3.7.4和pip3
亲测有效,针对 阿里云 centos 7 轻量服务器 python ==> 3.7.4 pip ==> 3 一,打开python官网,找到下载Python的tgz文件,有两种方式下载 ( ...
- BayaiM__ORACLE之ASM概念 --V 1.0.0
BayaiM__ORACLE之ASM概念 --V 1.0.0 -------------------------------------- ...
- FileSizeLimitExceededException
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException 很明显,这异常的意思是文件大小 ...
- SQL(二)语法
数据库表 一个数据库通常包含一个或多个表.每个表有一个名字标识(例如:"Websites"),表包含带有数据的记录(行). 在本教程中,我们在 MySQL 的 RUNOOB 数据库 ...
- drf扩展知识点总结视图
- 创建testng.xml文件
简单介绍 运行TestNG测试脚本有两种方式:一种是直接通过IDE运行(例如使用eclipse中的“Run TestNG tests”),另一种是从命令行运行(通过使用xml配置文件).当我们想执行某 ...
- 洛谷 P5596 【XR-4】题
洛谷 P5596 [XR-4]题 洛谷传送门 题目描述 小 X 遇到了一道题: 给定自然数 a,ba,b,求满足下列条件的自然数对 (x,y)(x,y) 的个数: y^2 - x^2 = ax + b ...
