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

时间:2015-01-07 18:24:11

标签: eclipse eclipse-plugin eclipse-rcp jface

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

我已经完成了关注并仍然获得NPE,请帮助:

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

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

  3. 在依赖项标签

  4. 中添加了(源)插件作为必需插件

    (源插件)

    <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 个答案:

答案 0 :(得分:0)

一些变化解决了这个问题:

  1. 当您从非UI线程更新视图时,请使用:
  2. Display.getDefault()。asyncExec(new Runnable(){             public void run(){

                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