次のメソッドを提供する RMI サービスがあります。
ArrayList<T> save(ArrayList<T> saveList) throws RemoteException;
その署名を次のように変更したい:
Collection<T> save(Collection<T> saveList) throws RemoteException;
これはコンパイル エラーにはならないので、すべて問題ないようです。しかし、クライアント アプリケーションがそのメソッドを実行しようとすると、次の例外が発生します。呼び出し元を変更していません。つまり、メソッドは引き続きArrayList
.
java.lang.NoSuchMethodError: com/IDatabaseDao.sync(Ljava/util/ArrayList;)Ljava/util/ArrayList;
RMI の仕組みが詳しくわかりませんが、期待する String 表現がないためにメソッドが見つからないのではないでしょうか? 本当?したがって、ここですべての発信者を変更する必要がありますか、それとももっと良い方法がありますか?
ここではコンパイルエラーが発生しないため、これは非常にエラーが発生しやすいようです。そのような問題を認識するツール、おそらく Eclipse プラグインはありますか?