Eclipse下JDK8升级至JDK11:包多模块访问冲突问题求解
Eclipse中Java 8升级到Java 11的多模块访问错误解决方法
核心问题原因
Java 9及以后引入模块化系统,org.w3c.dom、javax.xml等API被归入java.xml模块。Java 8时代这些API可能通过第三方JAR或默认类路径提供,升级后Classpath与Modulepath同时存在相同API,引发模块冲突。
解决步骤
切换到模块路径配置
- 右键项目 → 属性 → Java Build Path → Libraries
- 移除现有JRE System Library,点击「Add Library」重新添加Java 11的JRE
- 添加时选择将JRE放在Modulepath而非Classpath,应用设置
移除冲突的第三方依赖
检查项目Classpath中的第三方JAR,比如xml-apis.jar、jaxp-api.jar这类包含javax.xml或org.w3c.domAPI的包,直接删除——Java 11的java.xml模块已内置这些API,无需额外引入配置模块声明(模块化项目适用)
若项目采用模块化结构,在src/main/java下创建module-info.java,明确声明依赖的模块:module your.project.module { requires java.xml; }强制指定从
java.xml模块加载API,消除冲突清理重建项目
执行Project → Clean清理项目,右键项目选择「Refresh」后重新编译,确保配置生效
内容的提问来源于stack exchange,提问作者Muthu Kumar
相关产品推荐
相关产品推荐

