PlatformUI.getWorkbench()中的NullPointerException.getActiveWorkbenchWindow().getActivePage()

9 eclipse-plugin

 //obtain the active page
 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
Run Code Online (Sandbox Code Playgroud)

返回线程"Thread-3"中的异常java.lang.NullPointerExceptionμ.我该怎么办?

小智 37

如果线程未在活动窗口中运行,则PlatformUI.getWorkbench().getActiveWorkbenchWindow()将返回"null".您必须将代码包装在Display中,例如:

Display.getDefault().asyncExec(new Runnable() {
    @Override
    public void run() {
        IWorkbenchWindow iw = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
    }
});
Run Code Online (Sandbox Code Playgroud)


Ric*_*ler 3

添加一些空检查,工作台可能没有活动窗口,但如果工作台尚未启动(例如尚未调用 createAndRunWorkbench()),PlatformUI.getWorkbench 也可能抛出 IllegalStateException。

IWorkbenchWindow window = PlatformUI.getWorkbench().getInstance()
    .getActiveWorkbenchWindow();

if(workbenchWindow != null) {
     IWorkbenchPage page = window .getActivePage();
}
Run Code Online (Sandbox Code Playgroud)