问题描述:阿里云新部署的Linux服务器,安装后Java运行环境后,系统登录时发现验证码是乱码。
原因:服务器缺失验证码所需要的相应字体库。
解决方案:
1. 首先找到程序代码中生成验证码的地方所使用的的字体,比如是"宋体"。
//设置字体
Font font = new Font("宋体", Font.BOLD, 16);
2. SSH登录服务器查看服务器默认字体库,没有宋体
#fc-match
3. 从Windows系统中拷贝字体
从Windows系统中拷贝相应的字体到Linux服务器相应位置即可。
打开C:\Windows\Fonts
目录,选中“宋体”,拷贝到其他文件夹中,可以看到simsun.ttc
文件就是所需要的字体。当然也可以使用类似方式拷贝所有你需要的字体。
4. 拷贝到Linux服务器的默认字体库,一般默认在
/usr/share/fonts/
目录下。5. 执行如下命令更新字体缓存
#fc-cache
6. 再次查看默认字体
#fc-match
simsun.ttc: "宋体" "Regular"
7. 重启项目Tomcat服务器,再次访问验证码正常。
注:如果上述步骤没能使字体生效,可以尝试第二种方式,即把字体文件拷贝到服务器的 {JAVA_HOME}/jre/lib/fonts
目录下,使用fc-cache
命令重新载入字体配置,清除字体缓存,然后重启项目即可。