Eclipse Java17模块系统报错:org.w3c.dom包多模块冲突
问题:Eclipse编译Java17时报错“The package org.w3c.dom is accessible from more than one module: , java.xml”
此问题并非常见的「移除类路径重复依赖」问题,已排查过重复依赖,同事使用IntelliJ IDE无此问题,推测是Eclipse未妥善处理特殊项目配置导致。
核心报错
The package org.w3c.dom is accessible from more than one module: <unnamed>, java.xml
注:冲突依赖均来自同一JRE系统库,而非冗余依赖。
项目背景
这是一个大型遗留项目,已从Java 1.6升级至Java 17,新增server-util模块后出现问题;Compiler-Options设为Java 1.8时编译正常,设为Java 9及以上(如17)则触发报错。
环境工具
- Eclipse 2021_06 至 2023_09 版本均存在此问题
- Java 17(jdk-17.0.5+8)
- Gradle Wrapper 7.4.2
- 项目未使用
module-info.java,属于默认<unnamed>模块
项目结构
- 分为client、server、share、server-util四个模块
- client和server依赖share模块
- server依赖server-util模块
- 除server-util为Gradle项目外,其余均为Ant构建的普通Java项目
问题现象
- 编译选项切换至Java 17后,仅server与server-util模块间出现报错
- 冲突提示的依赖均来自同一JDK17,但Eclipse未识别为同一JRE
- 执行Gradle刷新后,server-util的JRE配置会被重置,需手动重新选择
已尝试方案
更换Eclipse版本、修改模块依赖、调整JRE配置等操作均无效。
推测与补充信息
- 推测Eclipse无法妥善处理普通Java项目与Gradle项目的依赖关系,导致误报冲突
- server-util模块的实现依赖包含
xml-apis-1.0.b2.jar,怀疑此jar包是问题根源,但IntelliJ中无报错
内容的提问来源于stack exchange,提问作者Sebsen36
相关产品推荐
相关产品推荐

