問題描述:阿里云新部署的Linux服務(wù)器,安裝后Java運(yùn)行環(huán)境后,系統(tǒng)登錄時發(fā)現(xiàn)驗(yàn)證碼是亂碼。
原因:服務(wù)器缺失驗(yàn)證碼所需要的相應(yīng)字體庫。
解決方案:
1. 首先找到程序代碼中生成驗(yàn)證碼的地方所使用的的字體,比如是"宋體"。
//設(shè)置字體
Font font = new Font("宋體", Font.BOLD, 16);
2. SSH登錄服務(wù)器查看服務(wù)器默認(rèn)字體庫,沒有宋體
#fc-match
3. 從Windows系統(tǒng)中拷貝字體
從Windows系統(tǒng)中拷貝相應(yīng)的字體到Linux服務(wù)器相應(yīng)位置即可。
打開C:\Windows\Fonts目錄,選中“宋體”,拷貝到其他文件夾中,可以看到simsun.ttc文件就是所需要的字體。當(dāng)然也可以使用類似方式拷貝所有你需要的字體。

宋體
4. 拷貝到Linux服務(wù)器的默認(rèn)字體庫,一般默認(rèn)在
/usr/share/fonts/目錄下。5. 執(zhí)行如下命令更新字體緩存
#fc-cache
6. 再次查看默認(rèn)字體
#fc-match
simsun.ttc: "宋體" "Regular"
7. 重啟項(xiàng)目Tomcat服務(wù)器,再次訪問驗(yàn)證碼正常。
注:如果上述步驟沒能使字體生效,可以嘗試第二種方式,即把字體文件拷貝到服務(wù)器的 {JAVA_HOME}/jre/lib/fonts目錄下,使用fc-cache命令重新載入字體配置,清除字體緩存,然后重啟項(xiàng)目即可。