代码之家  ›  专栏  ›  技术社区  ›  gtrak

cglib编译器jdk遵从性

  •  1
  • gtrak  · 技术社区  · 14 年前

    我在同事的盒子上发现了一个奇怪的错误。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安全接口,身份验证也是。

    1 回复  |  直到 14 年前
        1
  •  0
  •   gtrak    14 年前

    好吧,想清楚了。我在pom.xml中引入了cglib 2.2,spring flex引入了2.1u03,这是2005年的版本。由于某种原因,我的盒子最终使用了新的,而我的同事最终使用了旧的。

    有人知道为什么一个特定的先加载吗?

    推荐文章