记shiro1.10.0 升级排坑日志

之前项目(鄙人属于填坑的,转了N手,只维护)shiro组件用的1.9.1,近期漏洞爆出(),开始升级新版的jar包。

更换新版本的shiro-core-1.10.0.jar、shiro-web-1.10.0.jar包后报错如下:

Caused by: java.lang.NoSuchMethodError: org.apache.shiro.util.StringUtils.clean(Ljava/lang/String;Z)Ljava/lang/String; at org.apache.shiro.web.util.WebUtils.getCleanParam(WebUtils.java:632) at org.apache.shiro.web.util.WebUtils.getCleanParam(WebUtils.java:619) at org.apache.shiro.web.filter.authc.FormAuthenticationFilter.getUsername(FormAuthenticationFilter.java:219) at com.jeeplus.modules.sys.security.FormAuthenticationFilter.createToken(FormAuthenticationFilter.java:49) at org.apache.shiro.web.filter.authc.AuthenticatingFilter.executeLogin(AuthenticatingFilter.java:45) at org.apache.shiro.web.filter.authc.FormAuthenticationFilter.onAccessDenied(FormAuthenticationFilter.java:154) at org.apache.shiro.web.filter.AccessControlFilter.onAccessDenied(AccessControlFilter.java:133) at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162) at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:223) at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:198) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:131) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370) 看这个错误,也比较明显,应该是jar包冲突,然后开始排查。(本机windows正常运行,linux就报错了)。

最终找到shiro-lang-1.9.1.jar 也有个org.apache.shiro.util.StringUtils 类(妈蛋,都是shiro的东西,是不是该命名规范点)。

后来删除了此包,就可以了。

经验分享 程序员 微信小程序 职场和发展