从其他插件调用时我的插件视图抛出 NPE
My Plugin view when called from other plugin throws a NPE
我已经创建了一个插件视图(源)并试图从其他插件(目标)更新它。
我已完成以下操作,但仍获得 NPE,请帮助:
导出所有包,包括(源)插件中的视图 class
包括对(目标)插件的包可见性
在依赖项选项卡中将(源)插件添加为必需插件
(源插件)
<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();
}
几个更改解决了问题:
- 当您从非 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);
}
});
- 使用 eclipse 作业 API https://eclipse.org/articles/Article-Concurrency/jobs-api.html 不阻塞 UI
我已经创建了一个插件视图(源)并试图从其他插件(目标)更新它。
我已完成以下操作,但仍获得 NPE,请帮助:
导出所有包,包括(源)插件中的视图 class
包括对(目标)插件的包可见性
在依赖项选项卡中将(源)插件添加为必需插件
(源插件)
<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();
}
几个更改解决了问题:
- 当您从非 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);
}
});
- 使用 eclipse 作业 API https://eclipse.org/articles/Article-Concurrency/jobs-api.html 不阻塞 UI