Tycho构建Eclipse产品无法加载plugin_customization.ini问题咨询
问题解答
1. 如何将plugin_customization.ini放置到产品中不打包进bundle jar
可以实现,通过Tycho产品构建的根文件配置即可完成,操作步骤如下:
- 在存放
.product配置文件的插件根目录下,创建root目录(如果需要针对特定平台放不同文件,可创建root.<ws>.<os>.<arch>格式的目录,比如Linux x86_64平台对应root.gtk.linux.x86_64),将plugin_customization.ini放入该目录。 - 修改该插件的
build.properties文件,添加配置:
如果使用分平台目录则对应修改为对应目录名即可。root.folder = root/ - 构建后该文件会直接出现在产品安装包的根目录,和
eclipse.ini、config.ini同级,此时直接在config.ini中添加eclipse.pluginCustomization=plugin_customization.ini即可正常加载,不需要任何特殊路径前缀。
2. platform:/plugin/ URI是否可在启动参数/config.ini中使用
不可以。
Eclipse解析-pluginCustomization启动参数、eclipse.pluginCustomization配置项的时机在OSGi容器初始化完成之前,此时platform协议的处理器还未完成注册,根本无法解析这类指向bundle内部资源的URI。该启动阶段也没有可用API读取打包在jar格式bundle内的文件,不存在其他可直接访问bundle内该文件的路径写法。
3. 其他可行的落地方案
优先排查你之前使用org.eclipse.core.runtime.products扩展点配置未生效的问题,这是官方推荐的标准方案,未生效通常是两个配置疏漏:
- 路径配置错误:
preferenceCustomization属性的值是相对于声明该products扩展点的插件根目录的相对路径,不需要添加platform:/plugin/前缀,也不需要写绝对路径。如果plugin_customization.ini直接放在插件根目录,属性值直接填plugin_customization.ini即可。 - 资源未被打包进插件:检查该插件的
build.properties文件,确认bin.includes配置项中包含了plugin_customization.ini,否则构建出的插件jar包内不存在该文件,自然无法加载。配置示例:bin.includes = plugin.xml,\ META-INF/,\ .product,\ plugin_customization.ini
该方案不需要修改任何启动参数或config.ini,Eclipse加载产品扩展时会自动读取对应偏好配置,是侵入性最低的实现方式。
你提到的通过bundle activator启动时编码设置偏好的方案不推荐,一方面冗余,另一方面编码设置的偏好默认优先级低于用户手动修改的持久化偏好,容易出现配置不生效的问题。
内容的提问来源于stack exchange,提问作者bjhend
相关产品推荐
相关产品推荐

