[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 メーリングリストの案内