JDK17下Eclipse RCP插件项目javax.xml包模块冲突解决求助
解决方案
1. 清理插件中重复的javax.xml依赖包
- 打开插件项目的
MANIFEST.MF文件,切换到Dependencies标签页,检查Required Plug-ins和Bundle-Classpath中是否存在xml-apis.jar、jaxp-api.jar这类包含javax.xml.transform/javax.xml.validation包的第三方jar。 - 若存在此类jar,直接从项目中删除,并在
MANIFEST.MF里移除对应的依赖配置——JDK17的java.xml模块已原生提供这些类,无需额外引入。
2. 配置MANIFEST.MF明确依赖系统模块
- 打开
MANIFEST.MF的Runtime标签页,确认Classpath中无包含javax.xml包的非系统jar。 - 切换到Dependencies标签页,点击Add...,在插件搜索框中查找
java.xml并添加到Required Plug-ins列表;同时在Imported Packages中手动添加javax.xml.transform、javax.xml.transform.stream、javax.xml.validation,版本范围设为[1.0.0,)即可。
3. 调整项目JDK编译配置
- 右键项目→Properties→Java Build Path→Libraries,确保使用JDK17,移除所有包含javax.xml相关包的第三方库。
- 切换到Java Compiler,将Compiler compliance level设为17,勾选Use '-release' option并选择17。
4. 检查产品导出配置
- 导出RCP产品时,在Product Configuration的Dependencies标签页,确认所有插件依赖无重复引入javax.xml相关包。
- 查看Launching标签页的VM Arguments,移除不必要的模块参数;若需强制加载模块,可添加
--add-modules java.xml(一般无需手动添加)。
5. 验证模块加载情况
- 打开
build.properties,确保bin.includes仅包含插件自身类文件和资源,无重复的javax.xml相关jar。 - 在运行配置中添加VM参数
--show-module-resolution,运行后查看模块加载日志,定位重复包的来源并进一步清理。
内容的提问来源于stack exchange,提问作者lpp
相关产品推荐
相关产品推荐

