[Seasar-user:3468] Re: Hotswapについて
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 4月 7日 (金) 02:00:40 JST
小林 (koichik) です.
Date: Thu, 6 Apr 2006 23:07:15 +0900
From: akiyama <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:3466] Hotswapについて
> 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()]);
}
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内