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 のバグである可能性がありますか、それとも他に何か不足していますか?

spring 3.0.4、jboss 5.10、spring security 3.0.3 を使用

基本的に、クラスは spring-security で AuthenticationUserDetailsS​​ervice を実装します。

問題のあるメソッド シグネチャ:

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

UserDetails はスプリング セキュリティ インターフェイスであり、Authentication も同様です。

4

1 に答える 1

0

わかりました。私は明示的に cglib 2.2 を pom.xml に取り込んでおり、spring-flex は 2005 年からの 2.1_03 を取り込んでいました。何らかの理由で、私のボックスは新しいものを使用し、同僚は古いものを使用することになりました。

特定のものが最初に読み込まれる理由を知っている人はいますか?

于 2010-11-17T17:53:41.003 に答える