我正在编辑插件项目的一段很旧的代码。它抛出一个 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);
}
}
}