开发环境 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 下的验证码显示问题的更多相关文章

  1. CentOS下date命令 - 显示和设置系统日期与时间

    显示系统日期 要显示系统日期,只要输入: $ date Thu Dec 5 22:55:41 WIB 2013 格式化显示日期 日期有很多格式.如果你不喜欢默认的格式,你可以换一种格式.你可能会想&q ...

  2. CentOS下多种方法显示文本行号

    一.创建文本文件 ..}| >test.txt cat test.txt 二.多种方法显示行号 方法一:nl命令(注意:空行不显示行号) [root@WT data]# nl test.txt ...

  3. linux下tomcat6无法显示图片验证码 少了图形插件

    linux下tomcat6无法显示图片验证码(windows下显示正常) 原创 2015年10月20日 10:31:47 3526 linux下tomcat6无法显示图片验证码(windows下显示正 ...

  4. web项目部署在centos 7验证码显示不出来解决方案

    今天把项目部署在centos7上,发现验证码显示不出来,看了一下tomcat日志 Exception in thread "http-nio-8080-exec-3" java.l ...

  5. CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法

    CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的username@hos ...

  6. Linux CentOS下shell显示-bash-4.1$ 不显示用户名和主机名的解决方法

    CentOS下新增加一个用户,登录进去会发现shell脚本信息没有显示用户名和主机名,反而显示的是-bash-4.1$,如图所示: 而不是我们经常看到的username@hostname$的组合,看起 ...

  7. CentOS下shell显示-bash-4.1$不显示用户名路径

    Linux CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法. 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: -bash-4.1$ \ -b ...

  8. centos 7 下图形验证码乱码

    工作中遇到一个问题:同样的代码在centos 6.5下图形验证码是正常的 但是在centos 7下面是乱码 centos 6.5 的系统字体库目录 [wwwad@P2P-test2 fonts]$ p ...

  9. CentOS下Web服务器环境搭建LNMP一键安装包

    CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...

随机推荐

  1. SSH网上商城四

    第29课:10-SSH网上商城:购物模块的实体的封装 1.现在我们要实现购物车的模块,当用户在点击 加入购物车按钮的时候需要跳转到 上面我们需要对购物车的对象进行封装 上面一个商品就对应一个记录项,购 ...

  2. SSH网上商城一

    Java高级项目之SSH网上商城项目实战: 1.采用目前最主流的三大框架开发即Struts2+Spring+Hibernate框架整合开发.2.通过AJAX技术提供良好的用户体验.3.提供了邮箱激活的 ...

  3. Java是如何实现Future模式的?万字详解!

    JDK1.8源码分析项目(中文注释)Github地址: https://github.com/yuanmabiji/jdk1.8-sourcecode-blogs 1 Future是什么? 先举个例子 ...

  4. el-switch 初始值(默认值)不能正确显示状态问题

    <el-table-column align="center" label="状态">       <template slot-scope= ...

  5. ubuntu无法安装vim、tree等解决办法

    rm /etc/apt/sources.list.d/* 删除该目录下所有文件

  6. ajax前后端交互原理(7)

    7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head&g ...

  7. ShellExecute指定IE浏览器打开网页

    ShellExecute(NULL,L"open", L"iexplore.exe", L"www.baidu.com", NULL, SW ...

  8. 初至cnblogs —— 博客搬迁

    感觉写博客是一种总结.分享知识的有效方式,于是打算坚持通过博客这一载体来提升自己. 最初通过 Hexo + GitHub Page 来搭建个人博客,但是通过这种方式搭建的博客基本没有访问量.个人感觉没 ...

  9. Write a program that prints its input one word per line.

    #include <stdio.h> #define State '\n' void main() { int Juge=;/*only one space*/ int c=; while ...

  10. CenterOS的安装配置(配图解)

    CenterOS的安装配置 一.    配置虚拟机 打开Virtual Machine(虚拟机),点击create new virtual machine 进入新建虚拟机向导页面,选择[Custom( ...