Eclipse e4 RCP应用启动失败:“无法从URI检索bundle”错误排查求助
先拆解下你遇到的核心错误:
!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
这个报错本质是系统找不到com.mycompany.myapp这个插件,或者插件内的DemoPart类无法被正常访问。结合你怀疑feature.xml配置的方向,给你几个具体的排查和解决步骤:
检查feature.xml的插件包含情况
打开你的feature.xml,切换到Plug-ins标签页,确认com.mycompany.myapp插件已经被添加。如果是通过依赖其他feature来引入,要确保依赖的feature里确实包含了这个插件。另外注意插件的Version Match设置,别因为严格版本匹配但实际版本不一致导致无法加载。验证目标插件的MANIFEST.MF配置
打开com.mycompany.myapp插件的MANIFEST.MF文件:- 核对
Bundle-SymbolicName是否完全等于com.mycompany.myapp(大小写敏感,拼写错一个字符都会出问题) - 检查
Export-Package是否包含com.mycompany.myapp.demo包;如果是在e4应用模型里引用这个Part,还要确保插件配置了Eclipse-RegisterBuddy或者UI相关包能被workbench正常访问 - 确认
Bundle-ActivationPolicy设置为lazy,避免插件启动时未激活导致类无法被找到
- 核对
排查运行配置的插件列表
打开你的Run Configuration(运行配置),切换到Plug-ins标签页:- 直接搜索
com.mycompany.myapp,确认它已经被勾选(有时候Add Required Plug-ins会漏掉非直接依赖的插件) - 点击
Validate Plug-ins按钮,查看是否有依赖缺失或冲突的提示
- 直接搜索
检查e4应用模型的引用正确性
如果DemoPart是在.e4xmi文件里定义的Part:- 核对Part的
Class URI拼写,确保bundle名和类的全限定名完全正确 - 检查.e4xmi的
Dependencies标签,确认包含com.mycompany.myapp插件的依赖
- 核对Part的
清理重建项目,清除缓存
有时候是构建缓存导致的问题:- 执行
Project > Clean...,清理所有项目后重新构建 - 删除运行配置生成的临时工作区(路径一般是
workspace/.metadata/.plugins/org.eclipse.pde.core/[你的运行配置名]),再重新启动应用
- 执行
我之前碰到过几乎一模一样的问题,就是feature.xml漏加了包含Part的插件,而且运行配置里也没手动勾选,导致启动时workbench找不到对应bundle。按上面的步骤逐一排查,应该能快速定位到问题。
内容的提问来源于stack exchange,提问作者Paul H




