You need to enable JavaScript to run this app. IntelliJ JDK11下Java模块化项目报javax.xml.bind包读取冲突求解决
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ JDK11下Java模块化项目报javax.xml.bind包读取冲突求解决

Java 模块化项目 JAXB 包重复读取报错解决方案

冲突根因

Java 模块系统强制遵循导出包唯一性规则:同一个被导出的包,只允许由一个模块提供访问入口,如果模块路径上存在多个模块同时导出同名包,就会触发Module X reads package Y from both A and B类报错。
结合你提供的依赖配置,冲突来自两个叠加的问题:

  • 依赖层面引入了两套内容重叠的JAXB规范组件:Hibernate传递引入的javax.xml.bind:jaxb-api、CXF 链路传递引入的jakarta.xml.bind:jakarta.xml.bind-api,两个jar包内部都包含完全一致的javax.xml.bind包下的类文件。
  • 模块配置层面误用了JDK旧版本的内置模块声明:JDK 11已经将原内置的java.xml.bind、java.activation等Java EE模块移出核心JDK,你本地引入的第三方JAXB jar被模块系统自动识别为同名模块java.xml.bind,两个不同jar被识别为同名同导出包的模块,直接触发规则冲突。

分步解决方法

  1. 清理Maven依赖中的重复组件
    • 排除Hibernate传递引入的重复JAXB API依赖:在hibernate-core的依赖配置中,排除javax.xml.bind:jaxb-api传递依赖,避免和CXF链路引入的Jakarta版本JAXB包内容重叠。
    • 检查依赖树中的激活包组件,统一对齐到CXF要求的Jakarta版本,不要同时保留javax.activation:javax.activation-api和com.sun.activation:jakarta.activation两个组件,二者同样存在包名重叠问题。
    • 完成依赖调整后,刷新Maven依赖列表,确认树中不存在两个jar同时包含javax.xml.bind、javax.activation包内容的情况。
  2. 修正module-info.java的错误声明
    • 移除已失效的JDK内置模块声明:删除requires java.activation;、requires java.xml.bind;,这两个模块在JDK 11中已经不存在,声明无实际作用还会触发模块识别冲突。
    • 替换为第三方依赖对应的正确模块名声明:
      • 原requires java.activation替换为requires jakarta.activation;
      • 原requires java.xml.bind替换为requires jakarta.xml.bind;
      • 移除无实际使用场景的requires java.xml;声明,避免和第三方XML组件的包产生隐式冲突。
    • 修正后的参考module-info配置:
    module com.test {
        requires jakarta.activation;
        requires slf4j.api;
        requires spring.context;
        requires java.persistence;
        requires spring.beans;
        requires org.apache.cxf.core;
        requires jakarta.xml.bind;
    }
    
  3. 清理IDE的模块缓存
    • 在项目结构配置中,移除手动添加到模块路径的旧版JAXB jar,确保所有依赖全部由Maven统一解析注入。
    • 执行IDE的项目缓存刷新操作,重新加载模块路径配置,避免残留旧的模块识别结果。

避坑提示

  • 项目中不要混用javax和jakarta命名空间下的2.x版本同类API,这两个版本的API包名完全一致(如javax.xml.bind),在模块系统下必然触发包冲突。
  • 如果项目确实需要同时引入多个版本的同类API,建议移除module-info.java,切换为传统类路径运行模式,模块系统的强包唯一性规则不支持这种重复包的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 04:15:03