【发布时间】:2015-01-20 16:08:24
【问题描述】:
我创建了一个插件视图(源)并尝试从其他插件(目标)更新它。
我已经完成了以下操作,但仍然获得了 NPE,请帮助:
导出所有包,包括(源)插件中的视图类
包括对(目标)插件的包可见性
将(源)插件添加为依赖项选项卡中的必需插件
(源插件)
<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();
}
【问题讨论】:
-
getWorkbench、getActiveWorkbenchWindow、getActivePage 和 showView 都可以返回 null - 那么它是哪一个呢?做一些调试!
-
getActiveWorkbenchWindow 返回 null
-
所以您在没有打开窗口的情况下运行此代码。这段代码是如何运行的?
-
代码正在从其他插件调用,工作台窗口打开,如屏幕截图所示。运行方式 > 运行脚本 > ILaunchShortcut 调用其他插件中的某个类 A 调用视图来更新它。
-
根据链接stackoverflow.com/questions/1265174/…,我将视图更新包装在一个可运行线程中,但视图最后更新与执行不同步。
标签: eclipse eclipse-plugin eclipse-rcp jface