Повторно используйте ManifestEditor PDE и встречайте NullPointerException

1.что мы планируем сделать:

Повторно используйте ManifestEditor, чтобы открыть файл MANIFEST.MF, и добавьте наши функции на первую страницу обзора.

2.что мы уже знаем и сделали:

Опасно использовать внутренние классы и API, поэтому мы создаем ManifestEditorNew, который расширяет ManifestEditor.

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, но мы не можем найти подсказки муравьев, которые вызвали это. введите здесь описание изображения


person Sam Su    schedule 28.03.2014    source источник
comment
Вы все еще используете внутренние классы, просто расширение класса не помогает. Эти внутренние классы могут изменяться и меняются между выпусками, иногда даже полностью исчезая.   -  person greg-449    schedule 28.03.2014


Ответы (1)


Вероятно, вам нужно позвонить super.computeInitialPageId(), потому что похоже, что он что-то настраивает.

Примечание. Причина, по которой обзорная страница не всегда отображается, заключается в том, что редактор запоминает последнюю просмотренную страницу и показывает ее. По умолчанию будет отображаться страница обзора при первом редактировании манифеста.

Просто расширение внутреннего класса не устраняет тот факт, что вы используете внутренние классы Eclipse, что нарушает Правила взаимодействия с Eclipse API. Внутренние классы могут меняться и действительно меняются, а иногда даже полностью исчезают, у вас, вероятно, возникнут большие проблемы при переходе между версиями Eclipse.

person greg-449    schedule 28.03.2014
comment
Так что в моем состоянии я должен переписать новый редактор? Мы просто хотим внести несколько простых изменений в файл OverViewPage. Создание нового редактора будет стоить слишком много усилий. Любой совет? - person Sam Su; 28.03.2014
comment
Я не вижу никаких «официальных» интерфейсов в редакторе манифестов, поэтому либо напишите свой собственный редактор, либо рискните, но я видел здесь вопросы, когда у людей были большие проблемы с обновлением их кода до новой версии, потому что внутренние классы произошли большие изменения. - person greg-449; 28.03.2014