CentOS 下的验证码显示问题

开发环境 AND 生产环境.gif
问题:
项目部署到 CentOS 的服务器后,图片验证码请求时出现 500 错误,

日志一直是 ArrayIndexOfBoundsException:0,数组第 0 位越界,错误定位到了代码 123 行,
验证码使用 java.awt.Graphics 来生成的,在 123 行的地方调用了 java.awt.Graphics 类的 drawString 方法(方法的作用是将指定的文本绘制为图片),
实在找不出问题,便认为是 java.awt.Graphics 的问题,于是换谷歌的 Kaptcha 来生成验证码。
使用 Kaptcha 来生成图片验证码,本地环境测试没有问题,部署到服务器后也没有报错,但是验证码图片上只有干扰线,验证码文本并未绘制出来。
回过头想想使用 Graphics 来生成验证码时也是在绘制文本的时候出了问题,然后科普了一下 Kaptcha 在绘制文本时默认使用的字体是 Arial, Courier 这两种。
去 CentOS 存储字体的路径 /usr/share/fonts/ 去查看,果然没有 Arial 和 Courier 的字体,只有一个 stix 的字体目录,这样的话我们给它添加上这两种字体其中一种就可以了。
解决:
给服务器添加需要的字体即可。
1. 打开自己环境电脑上的本地目录:C:\Windows\Fonts,找到 Arial 或 Courier 字体,将他们上传到 CentOS 服务器中的 /usr/share/fonts/ 目录下,
这个目录下需要自己为字体创建一个目录,比如我要上传 Arial 的字体,需要先在 /usr/share/fonts/ 下创建一个 arial 的目录,然后将 arial 的字体文件放进去。
2. 执行以下命令将刚刚添加的字体设置缓存使其生效
[root@localhost ~]# cd /usr/share/fonts/arial
[root@localhost ~]# mkfontscale
[root@localhost ~]# mkfontdir
[root@localhost ~]# fc-cache -fv
3. 修改 bashrc文件,设置 gunplot 对 arial 的选择路径
# 先打开这个文件
vi ~/.bashrc
# 文件末尾追加这两句,第一句是我们安装的字体的路径
export GDFONTPATH=/usr/share/fonts/arial
export GNUPLOT_DEFAULT_GDFONT="arial"
CentOS 下的验证码显示问题的更多相关文章
- CentOS下date命令 - 显示和设置系统日期与时间
显示系统日期 要显示系统日期,只要输入: $ date Thu Dec 5 22:55:41 WIB 2013 格式化显示日期 日期有很多格式.如果你不喜欢默认的格式,你可以换一种格式.你可能会想&q ...
- CentOS下多种方法显示文本行号
一.创建文本文件 ..}| >test.txt cat test.txt 二.多种方法显示行号 方法一:nl命令(注意:空行不显示行号) [root@WT data]# nl test.txt ...
- linux下tomcat6无法显示图片验证码 少了图形插件
linux下tomcat6无法显示图片验证码(windows下显示正常) 原创 2015年10月20日 10:31:47 3526 linux下tomcat6无法显示图片验证码(windows下显示正 ...
- web项目部署在centos 7验证码显示不出来解决方案
今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...
- CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法
CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的username@hos ...
- Linux CentOS下shell显示-bash-4.1$ 不显示用户名和主机名的解决方法
CentOS下新增加一个用户,登录进去会发现shell脚本信息没有显示用户名和主机名,反而显示的是-bash-4.1$,如图所示: 而不是我们经常看到的username@hostname$的组合,看起 ...
- CentOS下shell显示-bash-4.1$不显示用户名路径
Linux CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法. 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: -bash-4.1$ \ -b ...
- centos 7 下图形验证码乱码
工作中遇到一个问题:同样的代码在centos 6.5下图形验证码是正常的 但是在centos 7下面是乱码 centos 6.5 的系统字体库目录 [wwwad@P2P-test2 fonts]$ p ...
- CentOS下Web服务器环境搭建LNMP一键安装包
CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...
随机推荐
- JavaWeb网上图书商城完整项目-数据库操作工具类
1.首先安装数据库,在windows上安装和在unix上面安装环境不一样,我在自己的本地电脑上安装,安装成功之后,如果使用navicat远程工具访问,需要允许mysql远程能被访问 方法二.直接授权( ...
- Object.defineProperty()更改对象中的函数
这个方法可以修改javascript中的对象的属性值,但是例子只讲了如何修改对象中的属性值,却没有讲如何修改对象里面的方法,所以这里补充下: 例子代码如下: <!DOCTYPE html> ...
- 入门大数据---Spark_Streaming与流处理
一.流处理 1.1 静态数据处理 在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中.应用程序根据需要查询数据或计算数据.这就是传统的静态数据处理架构.Hadoop 采用 HDFS 进 ...
- Mariadb之事务隔离级别
上一篇我们聊到了mariadb的锁,以及怎么手动加锁和解锁等等,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13196905.html:今天我们来聊一聊mar ...
- electron打造桌面应用
Electron 将网页打包成桌面应用(web页面生成exe) http://m.blog.csdn.net/u014563989/article/details/75045052 Electron学 ...
- java语言基础(二)_IDEA_方法
IDEA使用 项目结构: 所有代码放置在src文件夹内 新建包:在src文件夹上,右键新建包.包的命名:英文小写.数字.英文句点. 例如:使用公司域名倒写,如cn.itcast.day04.demo0 ...
- 优化:在k8s上部署的gitlab
gitlab组件图 gitlab在k8s上占用资源 # kubectl top pods -n default | grep git* gitlab-gitaly-0 9m 444Mi gitlab- ...
- List AND Set
第二章 List集合 Collection中的常用几个子类(java.util.List集合.java.util.Set集合). 1.1 List接口介绍 java.util.List接口继承自Col ...
- sublime 搜索时忽略文件夹
如上图:添加 "folder_exclude_patterns": ["要忽略的文件夹"]
- Log4j的使用说明
Log4j基本使用方法 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定 ...