Eclipse RCP迁移问题:插件版本引用错误(Mars转Oxygen)
解决Eclipse RCP 4 Feature中固定Batik 1.7版本的方案
不用手动删除插件文件,这里有几个更优雅的方法来让你的Feature永久指定使用1.7版本的Batik插件:
1. 直接在Feature配置文件中锁定版本
打开你的Feature项目里的feature.xml文件,切换到Plugins标签页,找到org.apache.batik.css、org.apache.batik.util和org.apache.batik.util.gui这几个插件:
- 选中每个插件,点击右侧的Edit按钮
- 在版本字段中,设置精确的版本范围,比如
[1.7.0,1.7.0](强制使用1.7.0版本),或者[1.7.0,1.8.0)(允许1.7.x系列,但排除1.8及以上版本) - 保存配置后,Feature就会优先选择符合这个范围的版本,不会再默认拉取1.8版本
2. 自定义目标平台(Target Platform)控制依赖
Oxygen版本的Eclipse自带了1.8版本的Batik插件,咱们可以通过自定义目标平台来限制只能使用1.7版本:
- 打开
Window > Preferences > Plug-in Development > Target Platform - 点击Add新建一个目标平台,选择Empty Target开始配置
- 依次添加Oxygen的官方插件站点(保证其他依赖正常),再添加包含1.7版本Batik插件的本地文件夹或者旧版本的更新站点
- 在目标平台的内容列表中,确保只勾选1.7版本的Batik插件,去掉1.8版本的勾选
- 设置这个自定义目标平台为Active,之后你的整个项目和Feature都会从这个目标平台拉取依赖,彻底避开1.8版本
3. 使用p2镜像规则排除高版本插件
如果你的项目是通过p2镜像来管理依赖的,可以在镜像配置文件中添加排除规则:
- 创建或编辑p2镜像的
mirror.xml文件 - 针对Batik插件添加exclude规则,比如:
<exclude> <id>org.apache.batik.css</id> <versionRange>[1.8.0,)</versionRange> </exclude> <exclude> <id>org.apache.batik.util</id> <versionRange>[1.8.0,)</versionRange> </exclude> <exclude> <id>org.apache.batik.util.gui</id> <versionRange>[1.8.0,)</versionRange> </exclude> - 这样在同步p2镜像时,就会自动过滤掉1.8及以上版本的Batik插件,只保留1.7版本
这些方法都是项目级或配置级的控制,比手动删除物理文件更安全,也方便团队协作共享配置,不会影响其他Eclipse项目的插件使用。
内容的提问来源于stack exchange,提问作者sunil hullur
相关产品推荐
相关产品推荐

