1

我在同事的盒子上遇到了一个奇怪的错误。CGLib 正在为 Spring AOP 日志记录自动代理服务类,并且在运行时它通过 cglib 代理类在 fastclass 上显示“未解决的编译错误:必须覆盖超类方法”。

在有问题的类中,我在实现接口时使用了@override 注释,并且我知道它在 jdk 1.6 中受支持,但在 1.5 中不受支持。CGLib 正在自动代理该实现类。

但是,它在我的带有 jdk_1.6_17 的盒子上运行良好,但在他的带有 jdk_1.6_10 的盒子上却不行。

但是,他可以使用使用相同 jdk 的 maven 正确编译项目。删除 @Override 注释修复了运行时 cglib 错误,但这很奇怪吧?

cglib 使用什么编译器进行自动代理,这可能是 jdk_1.6_10 中的错误还是我还缺少其他东西?

使用弹簧 3.0.4、jboss 5.10、弹簧安全 3.0.3

基本上,该类在spring-security中实现了AuthenticationUserDetailsS​​ervice。

有问题的方法签名:

@Override
public UserDetails loadUserDetails(Authentication auth) throws UsernameNotFoundException;

UserDetails 是一个 spring-security 接口,Authentication 也是。

4

1 回答 1

0

好的,想通了。我明确地将 cglib 2.2 引入了 pom.xml,spring-flex 引入了 2.1_03,它是从 2005 年开始的。出于某种原因,我的盒子最终使用了新的,而我的同事最终使用了旧的。

任何人都知道为什么一个特定的首先被加载?

于 2010-11-17T17:53:41.003 回答