複数のバージョンのライブラリ (バックエンド インターフェイスをカプセル化) を使用できるようにする必要があるクライアント (Eclipse RCP) を作成しています。ライブラリの各バージョンは、クライアントが使用するいくつかの新しいクラス/メソッドを追加します。古い lib バージョンが使用されている場合、クライアントは lib バイトコードに存在しない新しいクラス/メソッドにアクセスし、NoClassDefFoundError が発生します。
ですから、これを最善の方法で行う方法を考えています。フェイルセーフにする最も簡単な方法は、そのようなコードへのすべての呼び出しを try/catch ブロックにラップすることです。ライブラリ ソースで新しいコードをマークするためのカスタム アノテーションを作成し、そのようなマークされたコードが try/catch によって保護されていないコードからアクセスされたときにコンパイラの警告を発行することを考えていました (これはカスタム アノテーションで実行できますか? Haven前に書いてない)。または、誰かがよりエレガントな別のアプローチを考えることができますか?