最近公司cas-server服务端集成google验证码功能使用的是cas-server4.0.0版本,但是在集成完成后启动程序成功在打开页面时报java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter异常问题,在网上搜索该问题要么是提问题没有解决,要么就是解决问题不成功的方式,因此本站素文宅blog.yoodb.com为大家整理了解决方案,对本站兴趣的小伙伴们欢迎收藏,下面废话不多说,分析一下问题原因以及说一下解决方案。
cas-server验证码具体异常信息如下:
java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter at com.google.code.kaptcha.impl.WaterRipple.getDistortedImage(WaterRipple.java:32) at com.google.code.kaptcha.impl.DefaultKaptcha.createImage(DefaultKaptcha.java:44) at com.google.code.kaptcha.servlet.KaptchaServlet.doGet(KaptchaServlet.java:95) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.github.inspektr.common.web.ClientInfoThreadLocalFilter.doFilter(ClientInfoThreadLocalFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:722)
分析:
这是由于jar包冲突或者缺少jar导致该异常的,本文中的原因是缺少filters-2.0.235.jar
1) 手动下载filters-2.0.235.jar包放入项目lib目录下,下载地址:
http://grepcode.com/snapshot/repo1.maven.org/maven2/com.jhlabs/filters/2.0.235/
2) 通过maven配置pom.xml,增加配置代码如下:
<dependency> <groupId>com.jhlabs</groupId> <artifactId>filters</artifactId> <version>2.0.235</version> </dependency>
重启tomcat服务,效果图:
如上图所示那么cas-server4.0.0服务端增加验证码成功,如果还有其他问题欢迎大家留言咨询。
方 (2019/12/21 17:03:14)回复

万分感谢大佬~请收下我的膝盖