我正在从插件项目中编辑一段非常古老的代码。它抛出一个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并清理了项目。但是,会引发相同的错误。我已经在整个系统中搜索了任何同名的编译类文件,但似乎没有。我怀疑 Eclipse 正在引用文件夹中的类文件,而不是/bin这是默认输出文件夹。我究竟做错了什么?
我已经清除了 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);
}
}
}