在我的RCP应用程序中,我使用此代码切换透视图:
IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window);
我没有更改我的代码,但是我改变了我的开发环境
java 6 64bits + windows + Eclipse Indigo
到
java 7 32bits + windows + Eclipse Juno
现在,透视图不再切换,没有异常,并且在调试中没有任何可疑内容。
我没有找到任何错误报告。
有解释吗?解决方法?
答案 0 :(得分:6)
我也遇到过这个问题。据我所知,这是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()
是否安全。
答案 1 :(得分:2)
这是错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=395084,已修复Eclipse Luna,计划于6月发布。
答案 2 :(得分:1)
这是一个旨在澄清和解决我的问题的答案:
使用Eclipse 4 IDE,构建在Eclipse 4之前开发的RCP应用程序,集成Java 7功能并与Windows 32位兼容。当然能够改变观点。
这个答案并没有解决那些想要在RCP应用程序中切换透视图并使用新Eclipse 4平台的功能或外观(不要与Eclipse 4 IDE混淆)的人的问题。但我不推荐它,至少对于一个旧的应用程序(在Eclipse 3上开发),鉴于:
对于这3点,我不能说它是由于Eclipse 4平台还是Eclipse 3兼容层。我希望专门针对新Eclipse 4平台开发的新应用程序能够正确运行。
所以我的解决方案是定义一个Eclipse 3目标并将其用于构建。
以下是完整的程序:
现在,在您的.product
中,“Eclipse Product Export Wizard”将构建一个Eclipse 3可执行文件。
实用说明:
.product
字段中删除了一些内容。我不得不重置ID并检查“该产品包含原生的laucher工件”