我们在项目中使用了Spring Web Flow 2.4.1和Spring Security 3.x(最高3.2.6)。但是,在我们升级到Spring Security 4.0.1之后,我们遇到了以下异常。有什么帮助吗?
java.lang.NoSuchMethodError: org.springframework.security.access.vote.AffirmativeBased: method <init>()V not found
at org.springframework.webflow.security.SecurityFlowExecutionListener.decide(SecurityFlowExecutionListener.java:102)
答案 0 :(得分:3)
****** 更新的答案 *******
SWF 2.4.2现已上市spring.io/blog/2015/09/01/spring-web-flow-2-4-2-released
将解决此问题。
-Neil McGuigan
****** OLD ANSWER *******
for:import org.springframework.security.access.vote.AffirmativeBased
AffirmativeBased() 已过时。 使用带选民名单的构造函数
在较新的Spring Security 4.0.1中已删除了AffirmativeBased()空构造函数(已在3.2.6中标记为已弃用)
org.springframework.webflow.security.SecurityFlowExecutionListener.decide(SecurityFlowExecutionListener.java:102)
SecurityFlowExectionListener #defision方法在第102行调用此空构造函数。
简短回答: Spring Webflow 2.4.1尚未针对Spring Security 4.0.1进行更新,恢复为3.2.6
长(拍摄)回答:如果你无法恢复并希望继续使用webflow ...这可能是一个长镜头尝试扩展org.springframework.webflow.security.SecurityFlowExecutionListener和@Override决定方法。复制粘贴决定方法的原始代码,但从
更改第102行 abstractAccessDecisionManager = new AffirmativeBased();
到
abstractAccessDecisionManager = new AffirmativeBased(voters);
虽然这可能会解决您当前的问题......我怀疑这会发现进一步的不兼容性问题,但我认为这种变化是微不足道的,值得一试。