如何配置Eclipse RCP项目关联工作区自定义库以支持导航搜索?
问题描述
我在Eclipse RCP项目中使用了自行开发的Library A,这个库同时也用于非Eclipse RCP的Java项目。我已经将该库作为Maven依赖添加到Target Platform中,Tycho可以正常获取并完成构建,这部分符合预期。
Target Platform中添加Library A的配置代码如下:
<location includeDependencyDepth="direct" includeDependencyScopes="compile" includeSource="true" missingManifest="generate" type="Maven" label="libA"> <dependencies> <dependency> <groupId>com.foo</groupId> <artifactId>A</artifactId> <version>5.1.0-SNAPSHOT</version> </dependency> </dependencies> </location>
但在Eclipse IDE里遇到了问题:RCP插件引用的Library A被识别成和工作区中打开的版本不一致。比如从RCP插件类里按Ctrl+点击跳转Library A的类时,打开的是.class文件而非工作区里的.java文件;另外,在RCP插件中搜索Library A类的引用也无法正常生效。
需要配置Eclipse RCP项目,让它识别到RCP插件使用的Library A和工作区里的是同一个版本,从而支持正常的导航与搜索功能。
解决方法
1. 给Library A添加插件项目特性
如果Library A还不是Eclipse插件项目,先进行转换:
- 右键Library A项目 → Configure → Convert to Plug-in Projects
- 向导中保持默认设置(自动生成
MANIFEST.MF),完成转换。这样Library A会被Eclipse插件开发工具识别为本地插件。
2. 调整Target Platform优先级,优先加载工作区项目
修改Target Platform配置,让工作区的Library A优先于Maven仓库版本被加载:
- 打开Window → Preferences → Plug-in Development → Target Platform
- 选中当前使用的Target Platform,点击Edit
- 在编辑页面的Locations标签页,点击Add → 选择Existing Projects → 勾选Library A项目 → 点击Finish
- 将刚添加的"Existing Projects"条目拖动到所有Maven类型的location上方,确保工作区项目优先级更高
- 保存配置,等待Eclipse重新加载Target Platform
3. 修正RCP插件的依赖配置
确保RCP插件直接依赖Library A的插件ID,而非间接的Maven依赖:
- 打开RCP插件的
MANIFEST.MF,切换到Dependencies标签页 - 点击Add,搜索Library A的插件ID(通常与Maven的artifactId一致,比如
com.foo.A),添加为Required Plug-in - 移除任何通过Maven依赖间接引入的Library A引用(如果存在)
4. 刷新并重建项目
- 右键工作区 → Refresh,确保所有项目同步
- 执行清理重建:Project → Clean... → 选择Clean all projects,点击OK
- 等待Eclipse完成索引重建后,导航与搜索功能即可恢复正常
内容的提问来源于stack exchange,提问作者gillesB
相关产品推荐
相关产品推荐

