尝试启动我正在开发的 Eclipse e4 RCP 应用程序时,显示以下错误消息...
!ENTRY org.eclipse.e4.ui.workbench 4 0 2018-05-05 14:01:24.060
!MESSAGE Unable to retrieve the bundle from the URI: bundleclass://com.mycompany.myapp/com.mycompany.myapp.demo.DemoPart
我认为问题可能是由feature.xml
文件中未定义的插件引起的,但是我无法弄清楚缺少哪个插件。使用插件MANIFEST.MF
文件"依赖关系分析"部分下的"显示插件依赖关系层次结构"功能,我在feature.xml
文件中包含了所有插件依赖关系。
该产品基于功能,由我开发的插件和从Eclipse Orbit中提取的第三方依赖项组成。应用程序当前正在使用 Eclipse 中的产品文件启动。
我的问题是...
- 是否可以从 Eclipse RCP 应用程序获得更详细的错误消息,以指示问题的原因?
- 我可以采取任何其他故障排除步骤来获取问题的原因吗?
- 假设问题是由缺少的插件引起的,是否可以确定实际缺少哪个插件?
解决方案是使用 OSGI 控制台来确定无法加载捆绑包的原因。这需要执行多个步骤:
- 将参数
-console 5555
添加到产品文件启动参数 - 使用端口 5555 上的 telnet 或 Eclipse IDE 中的控制台视图连接到控制台
- 使用命令查找捆绑包 ID,
ss <xxx>
其中<xxxx>
是不会加载的捆绑包的名称,或者仅使用命令ss
并在列表中查找捆绑包 - 运行命令
diag <bundle-id>
其中<bundle-id>
是从上一步获取的 ID。这应该指示捆绑包失败的原因 - 如果问题是由于缺少依赖项引起的,请在
feature.xml
文件中查找一个或多个带有文本Unresolved requirement
和缺少插件的条目
可能需要多次重复步骤 2 到 5 才能找到所有缺少的依赖项。