6

In my RCP application I use this code to switch perspective :

IWorkbenchWindow window = getViewSite().getWorkbenchWindow();
window.getWorkbench().showPerspective(PRODUCT_PERSPECTIVE_ID, window);

I didn't change my code but I changed my developement environnement from

java 6 64bits + windows + Eclipse Indigo

to

java 7 32bits + windows + Eclipse Juno

And now the perspective doesn't switch any more, with no exception and nothing suspect visible in debug.

I didn't find any bug report.

Is there an explanation ? A workaround ?

4

3 回答 3

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()以确保安全。

于 2012-08-07T15:00:06.317 回答
2

这是错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=395084并针对计划于 6 月发布的 Eclipse Luna 进行了修复。

于 2014-02-06T13:34:13.953 回答
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 目标并将其用于构建。

这是完整的程序:

  1. 安装 JDK 7(32 位版本)
  2. 安装Eclipse 3.7(32位版本)
  3. 安装 Eclipse 4(32 位版本)
  4. 启动 Eclipse 4 并导入所需的项目
  5. 进入Window/Preferences/Plug-in Development/Target Platform
  6. 单击“添加”,然后单击“无”
  7. 单击“添加”然后单击“安装”并选择您的 Eclipse 3.7 目录
  8. 创建目标后,选择它(仍在 Window/Preferences/Plug-in Development/Target Platform 中)

现在,在您.product的“Eclipse 产品导出向导”中,将构建一个 Eclipse 3 可执行文件。

实用笔记:

  • “全部清除”还不够,我必须在目标选择后停止/重新启动 Eclipse 才能使其正常工作
  • 安装过程删除了我的一些.product字段。我不得不重置 ID 并检查“该产品包含本机 laucher 工件”
于 2012-07-18T10:23:00.997 回答