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

时间:2009-08-12 09:31:07

标签: eclipse-plugin

 //obtain the active page
 IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

在线程“Thread-3”中返回异常java.lang.NullPointerExceptionμ。 我该怎么办?

3 个答案:

答案 0 :(得分:36)

如果线程未在活动窗口中运行,则PlatformUI.getWorkbench()。getActiveWorkbenchWindow()将返回“null”。 您必须将代码包装在人机界面中,例如:

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

答案 1 :(得分:2)

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

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

if(workbenchWindow != null) {
     IWorkbenchPage page = window .getActivePage();
}

答案 2 :(得分:0)

我对此有一种解决方法。即使它是旧帖子。

    IWorkbench wb = PlatformUI.getWorkbench();
    if (wb.getWorkbenchWindowCount() == 1) {
      try{
      wb.getWorkbenchWindows()[0].getActivePage().getPerspective();
      }
      catch(NullPointerException e)
      {
        Logger.log(e);
      }
    }