0

我正在从插件项目中编辑一段非常古老的代码。它抛出一个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);
        }
    }
}
4

0 回答 0