排除依赖仍无法解决Java9+项目org.w3c.dom多模块访问报错
Java 9+ 项目JPMS模块系统依赖冲突问题
报错场景
搭建Java 9及以上版本的项目时,触发*Java平台模块系统(JPMS)*相关的包访问冲突,处理XML解析相关导入语句时,IDE抛出明确报错:
The package org.w3c.dom is accessible from more than one module:
, java.xml
通过IDE的Open Type对话框排查确认,org.w3c.dom.Document类存在两个类提供方,导致类路径优先级冲突。此前参考过多个同主题的公开技术讨论,其中给出的通用方案(从依赖中排除对应冲突包)在当前场景下完全失效。
已完成的排查与配置
当前项目仅引入be.ugent.rml:rmlmapper:4.9.1这一个Maven依赖,按照同类问题的解决教程,在pom.xml中添加了如下排除规则:
<dependencies> <dependency> <groupId>be.ugent.rml</groupId> <artifactId>rmlmapper</artifactId> <version>4.9.1</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> <exclusion> <groupId>org.w3c</groupId> <artifactId>dom</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
配置完成后冲突问题未解决:项目可正常走完编译构建流程,但运行时会触发相关类加载报错。
待解决的核心问题
- 现有配置选择的排除包是否匹配实际的冲突来源?
- 执行
mvn dependency:tree命令排查时,未检索到任何提供org.w3c.dom包的依赖项,该如何定位实际提供冗余类路径的依赖来源?
内容的提问来源于stack exchange,提问作者Aljosha Koecher
相关产品推荐
相关产品推荐

