word is too tall: try to use less letters, smaller font or bigger background 報錯 java程序 驗證碼不顯示


驗證碼不現實問題爆發在測試站,還好只是個測試站,有時間讓我慢慢研究此問題。

具體的情況是這樣的:

下午三點多,突然測試人員跟我說,測試站后台的驗證碼不現實了,也就無法登陸了
通過詢問,是中午吃飯前還是好好的,突然就不能用了。

緊接着查看tomcat后台日志

java程序突然報錯,報錯信息如下:

[2018-06-27 21:08:15,318] http-bio-8480-exec-1 (ActionInterceptor.java:105) ERROR - Exception className :com.rongdu.web.action.ToolAction
[2018-06-27 21:08:15,318] http-bio-8480-exec-1 (ActionInterceptor.java:106) ERROR - Exception methodName:validimg
[2018-06-27 21:08:15,319] http-bio-8480-exec-1 (ActionInterceptor.java:107) ERROR - Exception message :
com.octo.captcha.CaptchaException: word is too tall: try to use less letters, smaller font or bigger background: text bounds = {text=0438
java.awt.geom.Rectangle2D$Float[x=0.0,y=-26.076172,w=20.198242,h=38.13672] ascent=26.076172 descent=12.060547 leading=-0.0
java.awt.geom.Rectangle2D$Float[x=40.198242,y=-26.076172,w=21.632812,h=38.13672] ascent=26.076172 descent=12.060547 leading=-0.0
java.awt.geom.Rectangle2D$Float[x=81.831055,y=-26.076172,w=20.198242,h=38.13672] ascent=26.076172 descent=12.060547 leading=-0.0
java.awt.geom.Rectangle2D$Float[x=122.0293,y=-26.076172,w=7.147461,h=38.13672] ascent=26.076172 descent=12.060547 leading=-0.0
} with fonts {java.awt.Font[family=Dialog,name=Verdana,style=bold,size=26]
java.awt.Font[family=Dialog,name=Arial,style=italic,size=26]
java.awt.Font[family=Dialog,name=Verdana,style=italic,size=26]
java.awt.Font[family=Dialog,name=Tahoma,style=bold,size=26]
} versus image width = 80, height = 37
at com.octo.captcha.image.gimpy.GimpyFactory.getImageCaptcha(GimpyFactory.java:79)
at com.octo.captcha.engine.image.ImageCaptchaEngine.getNextCaptcha(ImageCaptchaEngine.java:73)
at com.octo.captcha.service.AbstractCaptchaService.generateAndStoreCaptcha(AbstractCaptchaSe
..............................................................................
..............................................................................
報錯信息太多,只截取一節;

這個問題困擾了我四個小時,是突然下午不能訪問的,因為這期間測試站上線過一個版本

經過重啟Tomcat無效后,決定回退測試,結果顯然意見,依舊是失敗,報錯,不現實驗證碼;

為解決此問題,下班了公司人都走了,我還在公司繼續看,因為不解決,影響第二天的測試;

一直到九點多,都沒有找到原因,打電話咨詢一個java開發的朋友技術很吊,把報錯及問題說了一下,他說遇到過,應該是字體的問題,回頭仔細翻看日志,分析日志,發現。。。。
下面三行報錯代碼:

java.awt.Font[family=Dialog,name=Arial,style=italic,size=26]
java.awt.Font[family=Dialog,name=Verdana,style=italic,size=26]
java.awt.Font[family=Dialog,name=Tahoma,style=bold,size=26]

然后把name的三個字體在windows下找到,放到centos下,在/usr/share/fonts/ 下創建三個目錄,分別把三個字體的文件存放進去,然后執行 fc-cache 重新加載字體;

[root@bogon fonts]# pwd
/usr/share/fonts
[root@bogon fonts]# ls
arial lyx tahoma Verdana
[root@bogon fonts]# fc-cache

解決;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM