プラグイン プロジェクトから非常に古いコードを編集しています。次のようなClassCastExceptionをスローしています。
java.lang.ClassCastException: org.eclipse.wst.html.ui.StructuredTextViewerConfigurationHTML cannot be cast to puakma.vortex.editors.pma.parser2.PmaStructuredTextViewerConfiguration
at puakma.vortex.editors.pma.PmaStructuredTextViewer.configure(PmaStructuredTextViewer.java:20)
at org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(AbstractTextEditor.java:3419)
at org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(StatusTextEditor.java:54)
テスト目的でPmaStructuredTextViewerの内容をシャッフルしましたが、同じエラーが何度もスローされます。私は毎回プロジェクトをきれいにしてビルドしました。出力フォルダー/binもクリアし、プロジェクトをクリーンアップしました。ただし、同じエラーがスローされます。システム全体で同じ名前のコンパイル済みクラス ファイルを検索しましたが、何もないようです。デフォルトの出力フォルダーである/bin以外のフォルダーにあるクラスファイルをEclipseが参照していると思われます。私は何を間違っていますか?
bin フォルダーをクリアし、プロジェクトを再構築せずに実行しました。プロジェクトは正常に実行されます。Eclipse が正しいクラス ファイルを bin フォルダーにロードすることを確認するにはどうすればよいでしょうか。
public void configure(SourceViewerConfiguration configuration)
{
((PmaStructuredTextViewerConfiguration) configuration).setupReconciler(this);
super.configure(configuration);
}
コードを次のようにカスタマイズしました。どういうわけか同じ例外がスローされます。これにより、新しくコンパイルされたクラス ファイルが実行時に Eclipse によって使用されていないと思われます。代わりに、古いクラス ファイルを使用します。
public class PmaStructuredTextViewer extends StructuredTextViewer
{
public PmaStructuredTextViewer(Composite parent, IVerticalRuler verticalRuler, IOverviewRuler overviewRuler, boolean showAnnotationsOverview, int styles)
{
super(parent, verticalRuler, overviewRuler, showAnnotationsOverview, styles);
}
public void configure(SourceViewerConfiguration configuration)
{
if(configuration instanceof PmaStructuredTextViewerConfiguration)
{
((PmaStructuredTextViewerConfiguration) configuration).setupReconciler(this);
super.configure(configuration);
}
}
}