我在同事的盒子上发现了一个奇怪的错误。CGLib正在为spring AOP日志自动代理一个服务类,在运行时,CGLib代理类在fastclass上显示“unresolved compilation error:must override a superclass method”。
在这个有问题的类中,我在实现接口时使用了@override注释,我知道jdk 1.6支持它,而不是1.5。CGLib正在自动代理该实现类。
不过,它在我的jdk_1.6_17的盒子上工作得很好,但在他的jdk_1.6_10的盒子上工作得不好。
然而,他可以使用maven正确编译项目,maven使用相同的jdk。
删除@Override注释可以修复运行时cglib错误,但这很奇怪,对吧?
cglib使用什么编译器进行自动代理,这可能是jdk 1.6u10中的一个错误,或者是我遗漏了什么?
使用Spring3.0.4、JBoss5.10、SpringSecurity3.0.3
基本上,该类在SpringSecurity中实现AuthenticationUserDetailsService。
违规方法签名:
@Override
public UserDetails loadUserDetails(Authentication auth) throws UsernameNotFoundException;
UserDetails是一个spring安全接口,身份验证也是。