前几天公司一个项目在升级时发现以前现有登录验证码出现数字不清楚,因为服务器是用的新的服务器,当然tomcat与jdk也是新部署的,所以第一直觉以为是linux操作系统图形化包的问题,然后开始各种排查图形化安装包的版本,后来也怀疑是linux操作系统字体问题,但最终也没有解决。
后来相关部署同事突然想到应用部署时选用的是linux自带的open jdk7的版本,怀疑可能是jdk版本的问题,所以果断的换回oracle jdk版本,换后重试验证码功能,验证码中的数字显示正常,确实是open jdk导致。
本人比较少关注open jdk与sun jdk 或者现在oracle jdk的区别,后来在网上搜索相关资料进行了解,发现差别挺大,如open jdk与jdk的授权协议不同;由于产权的问题,open jdk很多产权不是SUN的源代码而是被替换成一些功能相同的开源代码,比如:说字体栅格化引擎,使用Free Type代替;open jdk 就是一个精简版的jdk。但是为什么会导致验证码数字显示模糊在网上没有搜索到具体原因,还有待有了解。此种情况告诫我们项目在上线部署时不要图省事,使用不同版本的jdk,需要严格按要求安装相应jdk版本,避免出现奇怪的问题。