Eclipse4 RCP 指南

常见的启动问题

Checklist for common launch problems

在 Eclipse RCP应用程序运行配置中的错误是常见的问题源,本章描述这些问题,在你启动应用程序时有问题,可以参考参考。下表列出了潜在的问题和应对方案。

问题 审查
在启动时显示 "Could not resolve module" 检查在你的产品配置中包含了所有需求的插件。确保你的产品定义了到所有这些需求插件或特征的依赖。参考“在产品启动时查找缺少的插件”。
Bundles 可能也需要特定版本的 Java 虚拟机,即,一个 bundle 可能需要 Java 1.6,因此不能在 Java 1.5 VM 中加载。检查 MANIFEST.MF 文件的 Overview 标签页中需求的 Java 版本。
在启动时显示 "java.lang.RuntimeException: No application id has been found." 参考上面的 "Could not resolve module". 大多数情况下也会通过缺少插件依赖触发。
奇怪的行为,但是没有错误消息 检查你的运行配置是否包含-consoleLog参数。这个选项允许你在 Eclipse IDE 的控制台视图中查看应用程序错误。
运行时配置经常缺少需求的插件 确保你的产品或特征包含所有需求的依赖。
在产品依赖标签页中的修改没有反映到运行配置(即,添加了新插件但是没有包含在运行配置中) 如果你直接从产品定义文件启动的话,会更新存在的运行配置。如果你直接选择运行配置启动,它将不会更新。
应用程序模型修改没有反映到 Eclipse 4 应用程序中 Eclipse 4 持久化用户的改变到一个文件,在启动时从这个文件中恢复。在开发期间,这可能导致模型修改没有正确的应用到运行时模型的情形,例如,你定义了一个新的菜单项,但是这个菜单项没有在你的应用程序中显示。
服务,例如,key 绑定或选择器服务,在 Eclipse 4 应用程序中不能工作 在 Eclipse 4.3 之前,每个 Part 需要实现一个 @Focus 方法来将焦点放到 SWT 控制中,这个错误在 Eclipse 4.3 之后不再发生。
菜单项在 Eclipse 应用程序中时禁止的 确保包org.eclipse.e4.ui.internal.workbench.addons中的HandlerProcessingAddon类注册为模型组件。bundle 符号名是org.eclipse.e4.ui.workbench
在注册表中找不到应用程序 "org.eclipse.ant.core.antRunner" 或应用程序 确保你在产品配置文件中点击了新建...按钮,然后选择了E4Application作为启动应用程序。你可以在 plugin.xml 文件中的扩展标签页检查当前的设置,在org.eclipse.core.runtime.products扩展细节中。

在产品启动时查找缺少的插件依赖

最常见的问题是在你的产品中缺少一些需求的插件,如果你用基于特征的产品配置,你需要确保所有在 MANIFEST.MF 文件中引用的插件也包含在你的特征中。这个错误通过控制台视图报告,通常是第一个错误消息,你需要向上滚动才能看到它。

下面列出了这个消息通常看起来的样子:

org.osgi.framework.BundleException: 
   Could not resolve module: com.example.e4.rcp.todo.services [9]
      Unresolved requirement: 
         Require-Bundle: com.example.e4.rcp.todo.events; 
            bundle-version="1.0.0"

在弄清楚缺少的插件后,确保将它们添加到你的产品中(如果产品是基于插件的)或添加到你的特征中(如果产品是基于特征的)。

提示:Eclipse 可以在你运行启动配置之前自动的检查缺少的依赖。在插件标签页,点击验证插件按钮或选择在启动之前自动验证插件选项。这将检查运行配置是否有所有需求的插件。

避免在运行配置中修复依赖问题,因为运行配置是基于产品配置文件创建或更新的,因此总是确保产品文件是正确配置的,而不是修改派生的信息。产品配置用来输出你的产品,因此产品依赖中的错误会导致输出的应用程序不能启动。