从其他插件调用时我的插件视图抛出 NPE

My Plugin view when called from other plugin throws a NPE

我已经创建了一个插件视图(源)并试图从其他插件(目标)更新它。

我已完成以下操作,但仍获得 NPE,请帮助:

  1. 导出所有包,包括(源)插件中的视图 class

  2. 包括对(目标)插件的包可见性

  3. 在依赖项选项卡中将(源)插件添加为必需插件

(源插件)

<plugin>
   <extension
         point="org.eclipse.ui.views">
      <view
            class="com.he.reportLayer.views.BrowserView"
            id="com.he.reportLayer.views.BrowserView"
            name="Live Reporter!">
      </view>
   </extension>
</plugin>  

(目标插件)

 BrowserView view=null;
            try {
                view =(BrowserView)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("com.he.reportLayer.views.BrowserView");
            } catch (PartInitException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

几个更改解决了问题:

  1. 当您从非 UI 线程更新视图时使用:

Display.getDefault().asyncExec(new Runnable() { public无效运行(){

            IWorkbenchWindow iw =
                PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            try {
                view =
                        (BrowserView) iw.getActivePage().showView(
                            "com.he.reportLayer.views.BrowserView");
                view.getBrowserInstance().setUrl(url);
            } catch (PartInitException e) {
                e.printStackTrace();
            }
           // System.out.println("View >>" + view);
        }
    });
  1. 使用 eclipse 作业 API https://eclipse.org/articles/Article-Concurrency/jobs-api.html 不阻塞 UI