将 AbstractDecoratedTextEditor 添加到 Eclipse 中的多页编辑器后的 NPE
NPE after adding AbstractDecoratedTextEditor to a Multipage editor in Eclipse
我正在创建一个简单的 Eclipse 编辑器,该编辑器包含两个页面,其中一个是从 AbstractDecoratedTextEditor
扩展的编辑器,然后在我的多页编辑器 class 中添加像这样的编辑器:
MyEditor myEditor = new MyEditor();
addPage(myEditor, myEditor.getEditorInput());
当我启动应用程序时,编辑器如下所示:
这是我的 class:
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)
....
您的 MyEditor
没有编辑器输入集。
在您的代码中:
MyEditor myEditor = new MyEditor();
addPage(myEditor, myEditor.getEditorInput());
myEditor.getEditorInput()
将返回 null
因为您还没有为编辑器设置输入。
您必须将正确的编辑器输入传递给 addPage
调用(通常是多页编辑器的输入)。然后这将在编辑器中设置输入。
我正在创建一个简单的 Eclipse 编辑器,该编辑器包含两个页面,其中一个是从 AbstractDecoratedTextEditor
扩展的编辑器,然后在我的多页编辑器 class 中添加像这样的编辑器:
MyEditor myEditor = new MyEditor();
addPage(myEditor, myEditor.getEditorInput());
当我启动应用程序时,编辑器如下所示:
这是我的 class:
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)
....
您的 MyEditor
没有编辑器输入集。
在您的代码中:
MyEditor myEditor = new MyEditor();
addPage(myEditor, myEditor.getEditorInput());
myEditor.getEditorInput()
将返回 null
因为您还没有为编辑器设置输入。
您必须将正确的编辑器输入传递给 addPage
调用(通常是多页编辑器的输入)。然后这将在编辑器中设置输入。