Eclipse rcp 重复使用PDE';s ManifestEditor和满足NullPointerException

Eclipse rcp 重复使用PDE';s ManifestEditor和满足NullPointerException,eclipse-rcp,eclipse-plugin,eclipse-pde,pde,Eclipse Rcp,Eclipse Plugin,Eclipse Pde,Pde,1.我们计划做什么: 重新使用ManifestEditor打开MANIFEST.MF文件,并将我们的功能添加到第一个概览页面 2.我们已经知道和做过的事情: 使用内部类和API是危险的,因此我们创建了一个扩展ManifestEditor的ManifestEditorNew import org.eclipse.pde.internal.ui.editor.plugin.ManifestEditor; import org.eclipse.pde.internal.ui.editor.plugin

1.我们计划做什么:

重新使用
ManifestEditor
打开
MANIFEST.MF
文件,并将我们的功能添加到第一个概览页面

2.我们已经知道和做过的事情:

使用内部类和API是危险的,因此我们创建了一个扩展ManifestEditor的ManifestEditorNew

import org.eclipse.pde.internal.ui.editor.plugin.ManifestEditor;
import org.eclipse.pde.internal.ui.editor.plugin.OverviewPage;

public class TheNewManifestEditor extends ManifestEditor{

    //it's strange that the default fist page is not the OverviewPage,so we override this method
    @Override
    protected String computeInitialPageId() {
        return OverviewPage.PAGE_ID;
    }
}
3.我们遇到的例外情况:

NullPointerException。 一旦我们的
TheNewManifestEditor
获得关注,他们会给我们一个NPE,但我们找不到导致这一点的蚂蚁线索。

您可能需要调用
super.computeInitialPageId()
,因为它看起来好像进行了一些设置

注意:概览页面不总是显示的原因是,编辑器会记住您查看的最后一页的内容,并显示给您。第一次编辑清单时,它将默认为概览页面


仅仅扩展一个内部类并不能消除这样一个事实,即您正在使用违反。内部类可以而且确实会发生变化,有时甚至完全消失,在Eclipse版本之间移动时可能会遇到很多麻烦。

您仍然在使用内部类,只是扩展类没有帮助。这些内部类可以而且确实在不同版本之间更改,有时甚至完全消失。因此,在我的情况下,我应该重新编写一个新的编辑器吗?我们只想在
概览页面
中做一些简单的更改。构建一个新的编辑器将花费太多的精力。有什么建议吗?我在清单编辑器中看不到任何“官方”接口,因此要么编写自己的编辑器,要么冒险——但我在这里看到了一些问题,人们在将代码更新到新版本时遇到了很大的问题,因为内部类发生了很大的更改。