标签:有一个 出现 解决 存储 string gnu mamicode 电脑 efault
开发环境 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"
标签:有一个 出现 解决 存储 string gnu mamicode 电脑 efault
原文地址:https://www.cnblogs.com/bails/p/13363737.html