在我的 RCP 应用程序中,我使用此代码来切换视角:
IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window);
我没有更改我的代码,但我更改了我的开发环境
java 6 64bits + windows + Eclipse Indigo
到
java 7 32bits + windows + Eclipse Juno
现在视角不再切换,毫无异常(exception),在调试中也看不到任何可疑的东西。
我没有找到任何错误报告。
有解释吗?解决方法?
最佳答案
我也遇到过这个问题。据我所知,这是 Juno (4.2.0) 中的回归。我使用调试器逐步完成对 showPerspective() 的调用。在任何时候都没有做出任何明确的尝试来实际改变视角。可能缺少内部事件监听器,或者 showPerspective() 到新框架的端口可能不完整。
作为变通方法,以下代码成功地改变了我的观点:
IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
IPerspectiveRegistry registry = workbench.getPerspectiveRegistry();
IWorkbenchPage page = window.getActivePage();
page.setPerspective(registry.findPerspectiveWithId(PRODUCT_PERSPECTIVE_ID));
根据进行这些调用的上下文,您可能希望对其中一些调用进行空保护,或者检查 Workbench.isClosing()
以确保安全。
关于java - 自 Eclipse Juno 以来,在 RCP 应用程序中切换视角?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523187/