argius note

プログラミング関連

エラーメッセージが分かりやすいほど解決が早いという話

今はGalileoをメインで使ってるんですけど、今日、ちょっと焦ってしまいました。
コンテンツ・アシストが突然エラーで使えなくなり、次に、ツールバーもおかしなことに。再起動すると、パッケージエクスプローラが完全に壊れて表示できなくなってしまいました。
幸い、エラーメッセージが出たので割とすぐに問題箇所を特定できました。

Unable to create view ID org.eclipse.jdt.ui.PackageExplorer: Plug-in org.eclipse.jdt.ui was unable to load class org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.

(DETAIL)
java.lang.ClassNotFoundException: org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart
	at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    .
    .
    .

クラスが無いって、そんな馬鹿な。おそらく、プラグインのJarファイルが壊れて読めなくなってしまったのではと推測。問題のクラスは"org.eclipse.jdt.ui*.jar"に含まれているのを突き止めたので、アーカイバで開こうとすると、壊れていて開けません(invalid CEN header (bad signature) )。
同じバージョンのJarファイルを含むEclipseのパッケージを取得して、同ファイルを抜き出し、置き換えたら直りました。


壊れた原因はEclipseともJavaとも関係ないんじゃないかと思っていますが、エラー通知が分かりやすかったことが早い解決につながった、という点が今回の教訓なのでした。