You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Java JPMS下包可从多个模块访问的构建报错

拆分包构建报错的落地解决方案

直接可执行的删除操作

定位到项目的WEB-INF/lib目录,删除以下和JDK内置模块路径冲突的老旧依赖包即可彻底解决报错:

  • dom.jar:内置org.w3c.dom包,与JDKjava.xml模块路径完全重复
  • sax.jar:内置org.xml.sax包,与JDKjava.xml模块路径完全重复
  • jaxp-api.jar:内置javax.xml.parsers包,与JDKjava.xml模块路径完全重复
  • xml-apis.jar:为上述三个包的集合封装,同样覆盖JDK内置XML API路径
  • 若目录下存在旧版plugin.jar(来自历史JRE Applet组件)也一并删除,其内置的netscape.javascript包会与JDKjdk.jsobject模块触发同类冲突

注意:同目录下的xercesImpl.jar为XML解析实现包,未覆盖JDK核心包路径,无需删除,误删会导致XML解析逻辑缺失。

其他排查项说明

  • 无module-info.java仍报错属于正常逻辑:JPMS会将classpath下所有未定义模块信息的依赖统一归为<unnamed>无名模块,只要无名模块和JDK命名模块存在同路径包,就会触发拆分包校验拦截,和项目是否手动编写module-info.java没有必然联系。
  • 删除nbproject目录、build.xml文件无效:两类文件为NetBeans IDE专属项目配置,使用VS Code开发时,这部分配置不参与项目依赖加载逻辑,删除后WEB-INF/lib下的冲突包依然会被自动加入classpath触发报错。
  • 系统环境变量未配置classpath/modulepath不影响冲突触发:Java Web项目默认会自动将WEB-INF/lib下所有jar包加入运行/构建classpath,不需要手动配置全局环境变量。

修复后校验操作

删除冲突包后,清理VS Code Java服务缓存避免旧索引残留:

  1. 按快捷键Ctrl+Shift+P唤起命令面板
  2. 执行Java: Clean Java Language Server Workspace命令
  3. 等待语言服务自动重启后重新构建项目,报错即可完全消除。

内容的提问来源于stack exchange,提问作者Ian Boyd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:57:11