作成したEclipseプラグインをデバッグすると、メソッドが存在するのにNoSuchMethodErrorが出る場合


Eclipseのプラグイン開発における小ネタ。

何回かデバッグしていたらNoSuchMethodErrorが出て、実行できなくなった

プラグイン実行時に叩くActionクラスのIFを変更したり、色々試行錯誤していたら、何度目かのデバッグで
IViewPartを実装したクラス中に存在するメソッドの実行時にNoSuchMethodErrorが出るようになった。
Actionクラス、Viewクラス、どちらのメソッド名を変更してみても、状況は変わらなかった。

対策

以下に存在した「.snap」ファイルを削除することで、正常に動作させることができた。
※runtime-Eclipseアプリケーションは、デバッグ中に起動するEclipseのworkspace。

runtime-Eclipseアプリケーション\.metadata\.plugins\org.eclipse.core.resources
runtime-Eclipseアプリケーション\.metadata\.plugins\org.eclipse.core.resources\.projects
runtime-Eclipseアプリケーション\.metadata\.plugins\org.eclipse.core.resources\.projects\<各サブディレクトリ>

サブディレクトリに存在する「.snap」のファイル名は、「.markers.snap」や「.syncinfo.snap」になっている。

全て削除後、再度デバッグを実行するとNoSuchMethodErrorが発生しなくなった。

参考

ちなみに

Eclipseのプラグインは、フォルダに配置しても認識されないことがある。
「エラー・ログ」ビューを表示することで原因がわかることもあるが、エラーすら出ていない場合もある。
その場合、(もしかしたらどうにかすることができるのかもしれないが、)Eclipseを新しくセットアップして対応するしかなくなるときがあるので、大きめのプラグイン導入前は、Eclipseをworkspaceごとコピーして、バックアップを作成しておくと、万が一の事態に対処できるのでお奨め。

だが、もしかしたらこのプラグインが認識されない問題も「.snap」を削除することで対応できる場合があるのかもしれない。プラグインがうまく認識されなくなった場合は、「.snap」ファイルができていないか確認してみるのは、対処としてありだと思う。