【问题标题】:Reuse PDE' s ManifestEditor and meet NullPointerException重用 PDE 的 ManifestEditor 并遇到 NullPointerException
【发布时间】:2014-03-28 02:29:47
【问题描述】:

1.我们打算做什么:

重复使用ManifestEditor 打开MANIFEST.MF 文件,并将我们的功能添加到第一个OverviewPage。

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,但我们找不到导致这种情况的 ant 线索。

【问题讨论】:

  • 您仍在使用内部类,只是扩展类没有帮助。这些内部类可以并且确实在版本之间发生变化,有时甚至完全消失。

标签: eclipse-rcp eclipse-plugin eclipse-pde pde


【解决方案1】:

您可能需要致电 super.computeInitialPageId(),因为它看起来已经进行了一些设置。

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

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

【讨论】:

  • 那么在我的情况下我应该重新编写一个新的编辑器吗?我们只想在OverViewPage 中做一些简单的更改。建立一个新的编辑器会花费太多的精力。有什么建议吗?
  • 我在清单编辑器中看不到任何“官方”界面,因此要么编写您自己的编辑器,要么冒险 - 但我在这里看到人们在更新他们的问题时遇到很大问题的问题代码到新版本,因为内部类发生了很大变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2018-11-06
  • 2015-07-20
  • 1970-01-01
  • 2016-02-08
  • 2021-03-27
相关资源
最近更新 更多