一、问题背景
问题描述:tomcat启动项目图片验证码加载不出来,环境信息如下所示:
操作系统 | CPU架构 | JDK版本 | tomcat版本 |
---|---|---|---|
Kylin Linux Advanced Server V10 (Tercel) | aarch64 | jdk1.8.0_181 | 8.5.37 |
二、问题解决
问题描述:tomcat启动项目图片验证码加载不出来,环境信息如下所示:
1、JAVA_OPTS中添加-Djava.awt.headless=true
说明:当前环境中的tomcat版本为8.5.37,设置的jvm参数在bin目录下的setenv.sh文件中,只需在之前定义的JAVA_OPTS中添加-Djava.awt.headless=true即可。
[root@arm bin]# vim setenv.sh
export JAVA_HOME=/usr/local/jdk1.8.0_181
export JRE_HOME=/usr/local/jdk1.8.0_181/jre
export JAVA_OPTS="-Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xms512m -Xmx4096m"
添加完成后,重启tomcat服务,发现还是无法加载图片验证码,在之前的x86_64架构中的服务器,操作系统是Centos7.6 和 Ubuntu 20上也出现过类似的问题,修改完之后图片验证码是出来的,但是在当前的Kylin Linux Advanced Server操作系统环境下不行,猜测可能跟系统环境有关系。
2、设置默认字体
根据官方描述,这个问题只发生在红帽7.4版本上。据报道,红帽公司的人正在努力解决这个问题。我找到的解决方案只是提供字体,以迫使乌托邦作为默认字体,由java使用。
[root@arm ~]# cat /etc/fonts/local.conf
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>serif</family>
<prefer><family>Utopia</family></prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer><family>Utopia</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>Utopia</family></prefer>
</alias>
<alias>
<family>dialog</family>
<prefer><family>Utopia</family></prefer>
</alias>
<alias>
<family>dialoginput</family>
<prefer><family>Utopia</family></prefer>
</alias>
</fontconfig>
重启tomcat之后,发现图片验证码已经加载出来了。
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》