//obtain the active page
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
在线程“Thread-3”中返回异常java.lang.NullPointerExceptionμ。 我该怎么办?
答案 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);
}
}