[Seasar-user:3470] Re: Hotswapについて

akiyama [E-MAIL ADDRESS DELETED]
2006年 4月 7日 (金) 10:33:23 JST


穐山です。

了解いたしました。
また、回答、対策方法ありがとうございました。

> 小林 (koichik) です.
>
> > Seaserを2.3.4を使用していた時、Hotswap機能を使用していました。
> > アプリの設定を何も変更をせずに2.3.7にバージョンアップさせました。
> > すると、下記エラーがはかれるようになってしまいました。
> > java.lang.IllegalArgumentException: repeated interface:
>
> 申し訳ありません,S2.3.7 で行った以下の修正のバグです.
> > - interfaceへHotswapを適用した場合に、そのinterfaceが
> >   HotswapProxyから抜けていた(親interfaceのみを対象にしていた)
> >   問題を修正しました。[Seasar-user:3239]
>
> この現象は,継承関係にある複数のクラスが同じインタフェースを
> 実装している場合に発生します.
>
> public class Foo implements Runnable {...}
> public class Bar extends Foo implements Runnable {...}
>
>
> お急ぎの場合はお手数ですが,
> org.seasar.framework.hotswap.HotswapProxy#getInterfaces() を
> 以下のように修正してください.
>
>     static Class[] getInterfaces(Class targetClass) {
>         final Set interfaces = new HashSet();
>         Collections.addAll(interfaces, targetClass.getInterfaces());
>         if (targetClass.isInterface()) {
>             interfaces.add(targetClass);
>         } else if (!targetClass.equals(Object.class)) {
>             Collections.addAll(interfaces, getInterfaces(targetClass
>                     .getSuperclass()));
>         }
>         return (Class[]) interfaces.toArray(new Class[interfaces.size()]);
>     }
>



Seasar-user メーリングリストの案内