2015-09-08 1 views
0

Я создаю простой редактор Eclipse, этот редактор содержит две страницы, один из которых является редактором, который простирается от AbstractDecoratedTextEditor, а затем в моем классе многостраничного редактора я добавляю редактор, как это:NPE после добавления AbstractDecoratedTextEditor в редактор многостраничных изображений в Eclipse

MyEditor myEditor = new MyEditor(); 
addPage(myEditor, myEditor.getEditorInput()); 

При запуске приложения, редактор выглядит следующим образом: enter image description here

Это мой класс:

public class MyEditor extends AbstractDecoratedTextEditor { 

    public MyEditor() { 
     setSourceViewerConfiguration(new SourceViewerConfiguration()); 
     setDocumentProvider(new FileDocumentProvider()); 
    } 

    @Override 
    protected boolean isLineNumberRulerVisible() { 
     return true; 
    } 

    public void init(IEditorSite site, IEditorInput input) { 
     setSite(site); 
     setInput(input); 
    } 
} 

И это бревно:

java.lang.NullPointerException 
    at org.eclipse.ui.texteditor.AddMarkerAction.getResource(AddMarkerAction.java:336) 
    at org.eclipse.ui.texteditor.AddMarkerAction.update(AddMarkerAction.java:162) 
    at org.eclipse.ui.texteditor.TextEditorAction.<init>(TextEditorAction.java:49) 
    at org.eclipse.ui.texteditor.AddMarkerAction.<init>(AddMarkerAction.java:96) 
    at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createActions(AbstractDecoratedTextEditor.java:1153) 
    at org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(AbstractTextEditor.java:3576) 
    at org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(StatusTextEditor.java:54) 
    at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createPartControl(AbstractDecoratedTextEditor.java:447) 
    at org.eclipse.ui.part.MultiPageEditorPart.addPage(MultiPageEditorPart.java:243) 
    at org.eclipse.ui.forms.editor.FormEditor.addPage(FormEditor.java:325) 
    .... 

ответ

1

Ваш MyEditor не имеет входной набор редактор.

В коде:

MyEditor myEditor = new MyEditor(); 
addPage(myEditor, myEditor.getEditorInput()); 

myEditor.getEditorInput() будет возвращаться null, потому что вы не установили вход в редактор.

Вы должны передать правильный вход редактора в вызов addPage (часто ввод многостраничного редактора). Затем этот параметр будет установлен в редакторе.

Смежные вопросы