我在同事的盒子上收到一个奇怪的错误。 CGLib是为Spring AOP日志记录自动代理服务类,并且在运行时它表示“未解决的编译错误:必须通过cglib代理类在快速类上覆盖超类方法”。
在违规类中,我在实现接口时使用@override注释,我知道它在jdk 1.6中支持但不支持1.5。 CGLib自动代理该实现类。
然而,它在jdk_1.6_17的盒子上工作正常,但在jdk_1.6_10上没有。
但是,他可以使用maven正确编译项目,maven使用相同的jdk。 删除@Override注释会修复运行时cglib错误,但这很奇怪吗?
cglib使用什么编译器进行自动代理,这可能是jdk_1.6_10中的错误还是还有其他我缺少的东西?
使用spring 3.0.4,jboss 5.10,spring security 3.0.3
基本上,该类在spring-security中实现AuthenticationUserDetailsService。
违规方法签名:
@Override
public UserDetails loadUserDetails(Authentication auth) throws UsernameNotFoundException;
UserDetails是一个spring-security接口,Authentication也是如此。
答案 0 :(得分:0)
好的,想通了。我明确地将cglib 2.2引入了pom.xml,并且spring-flex引入了2.1_03,这是从2005年开始的。出于某种原因,我的盒子最终使用了新的盒子,而我的同事最终使用了旧的。
任何人都知道为什么特定的人会先加载?