いつの間にかこんなエラー出るようになり(※Eclipse3.5)、Eclipseの『型を開く』が使えなくなってしまいました。
僕、この機能が使えないと死んでしまいます。
ちなみに、ご存知ない方へご説明。『型を開く』はソースファイルを検索する機能です。
( ´_ゝ`)フーン
と思ったそこのアナタ。
この機能を使わないなんて確実に人生をソンしてますよ!
コレを一度覚えてしまうと、いちいちパッケージエクスプローラから探してファイルを開く、
なんてメンドクサイこと、やってられなくなります。ええ。
ちなみに『リソースを開く』というのもありまして、こちらはソースファイルじゃなくて設定ファイル等を検索する機能です。
使い方は同じ。
さて、
エラー詳細はこんな感じ。検索用インデックスが壊れてしまっているようです。
java.lang.IllegalArgumentException: クラス・ファイル名の末尾は .class でなければなりません at org.eclipse.jdt.internal.core.PackageFragment.getClassFile(PackageFragment.java:182) at org.eclipse.jdt.internal.core.search.TypeNameMatchRequestorWrapper.createTypeFromJar(TypeNameMatchRequestorWrapper.java:146) at org.eclipse.jdt.internal.core.search.TypeNameMatchRequestorWrapper.acceptType(TypeNameMatchRequestorWrapper.java:108) at org.eclipse.jdt.internal.core.search.BasicSearchEngine$3.acceptIndexMatch(BasicSearchEngine.java:1111) at org.eclipse.jdt.core.search.SearchPattern.acceptMatch(SearchPattern.java:299) at org.eclipse.jdt.core.search.SearchPattern.findIndexMatches(SearchPattern.java:2124) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.findIndexMatches(MatchLocator.java:264) at org.eclipse.jdt.internal.core.search.PatternSearchJob.search(PatternSearchJob.java:97) at org.eclipse.jdt.internal.core.search.PatternSearchJob.execute(PatternSearchJob.java:63) at org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:276) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.searchAllTypeNames(BasicSearchEngine.java:1122) at org.eclipse.jdt.core.search.SearchEngine.searchAllTypeNames(SearchEngine.java:815) at org.eclipse.jdt.internal.ui.dialogs.FilteredTypesSelectionDialog.fillContentProvider(FilteredTypesSelectionDialog.java:556) at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$FilterJob.filterContent(FilteredItemsSelectionDialog.java:2182) at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$FilterJob.internalRun(FilteredItemsSelectionDialog.java:2124) at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$FilterJob.doRun(FilteredItemsSelectionDialog.java:2096) at org.eclipse.ui.dialogs.FilteredItemsSelectionDialog$FilterJob.run(FilteredItemsSelectionDialog.java:2083) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
で、回復方法ですがこちらに載ってました。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=269820#c9
要するに、インデックスを手動で消せとのこと。
- Eclipseを終了する
- "
/.metadata/.plugins/org.eclipse.jdt.core/*.index"を削除する - "
/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt"を削除する - Eclipseを起動する
だそうです。
で、やってみるとうまくいきました。