kaptcha 2.0在ubuntu jre 7u79场景生成校验码失败的问题

kaptcha 2.0与Ubuntu JRE 7u79 兼容性问题及解决方案
在将基于kaptcha 2.0的web应用从Windows迁移到Ubuntu+nginx+tomcat/jetty时,遇到验证码无法显示的问题。原因是kaptcha在Ubuntu的JRE 7u79中找不到JPEGCodec类。通过对比发现,该类在Ubuntu的JRE中位置与Windows不同,导致兼容性问题。解决方法是升级到kaptcha 2.3.2版本,并进行Maven配置,成功显示验证码,但新版本的验证码样式有所变化。

最近有空,所以打算将自己写的一个简单web应用从Windows+tomcat移植到Ubuntu+nginx+tomcat/jetty上。本想应该会比较顺利,等到加载index页面之后,发现之前windows下正常显示的校验码一直无法刷新出来。



然而手动测试分别向nginx和tomcat发送验证码请求,响应都是正常的。说明问题可能不是出在web容器上:



继续查看tomcat日志,一个NoClassDefFoundError异常引起我的注意:

Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec
at com.google.code.kaptcha.impl.DefaultKaptcha.createImage(DefaultKaptcha.java:91)
at com.google.code.kaptcha.servlet.KaptchaServlet.doGet(KaptchaServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
... 26 more

问题可能出现在开源的验证码工具kaptcha上,查看源码发现kaptcha在创建图片的过程中找不到JRE的扩展库JPEGCodec,经过对比发现同样为JRE 7U79版本,Windows JRE 有该类,但是ubutu URE的该类则在rt.jar\com\sun\imageio\plugins\jpeg下,现在问题原因就明了了:kaptcha 2.0与ubuntu jre 7u79存在兼容性问题。


解决办法:

使用当前主流的kaptcha 2.3.2作为验证码三方包。

官方下载地址(似乎google code已经关门谢客,或者被墙了,如果连不上可参考第二个链接):

http://code.google.com/p/kaptcha/

http://www.java2s.com/Code/Jar/k/Downloadkaptcha23jar.htm


maven配置2.3.2打包到环境验证,图片终于出来了,不过这验证码是什么鬼啊!!!看来kaptcha 2.3.2配置也是不兼容2.0的:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值