上一篇博客我们已经基本完成了部署工作,目前发现了验证码出现500错误,分析其代码,我们可以看到验证码使用的是System.Drawing命名空间下的类库, GDI+ 位图,这个在肯定是平台相关的,所以我们可以搜索GDI+mono来看有无解决方案。
通过搜索引擎,我们可以找到通过安装GDI+兼容API的库Libgdiplus可以实现GDI+功能。
安装方法
cd /usr/local/src/ #通过访问http://download.mono-project.com/sources/libgdiplus/获取libgdiplus最新的版本 wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz #解压缩 tar -zxvf libgdiplus-4.2.tar.gz cd libgdiplus-4.2 #注意可能会提示缺少gcc或其他的组件,安装后重新执行即可 ./configure --prefix=/usr make make install
重启Jexus服务,验证码可以显示了
仔细观察,和windows下验证码对比可以发现验证码字母显示不全,通过分析代码可以看到
//字体列表,用于验证码 string[] font = { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };
验证码使用了以上字体,而Linux中未安装这些字体,所以我们需要安装字体,可参考https://www.javawind.net/p130 安装字体,最后重启Linux,验证码问题解决!