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

Java 8迁移至Java 11时Eclipse报javax.xml.datatype多模块访问错误求助

Java 8迁移Java 11 Eclipse包冲突问题解决方案

方案1:Eclipse原生配置指定包加载优先级(直接匹配需求)

这个配置不需要调整项目依赖,就能实现javax.xml.datatype包优先从类路径加载:

  • 右键点击目标项目,选择属性(Properties)
  • 进入左侧菜单的Java构建路径(Java Build Path),切换到*库(Libraries)*标签页
  • 展开JRE系统库(JRE System Library [JavaSE-11])条目,选中子项模块访问规则(Module access rules),点击右侧的*编辑(Edit)*按钮
  • 在弹出的规则配置窗口点击添加(Add),规则类型选择禁止(Forbidden),规则模式填入javax/xml/datatype/**,依次点击确认保存所有配置

配置完成后Eclipse会禁止从JRE的java.xml模块读取javax.xml.datatype包下的所有类,只会从类路径的xml-apis依赖加载,编译报错直接消失,同时java.xml模块下的其他包不受影响,不会出现额外依赖缺失问题。

方案2:依赖调整从根源解决冲突

如果你能接受调整依赖,这个方案兼容性更强:

  • 保留ivy.xml中的<exclude org="xml-apis"/>配置,消除重复包冲突
  • 额外添加Java 11兼容的XML相关运行时依赖,避免出现NoClassDefFoundError:
<dependency org="javax.xml.bind" name="jaxb-api" rev="2.3.1" />
<dependency org="com.sun.xml.bind" name="jaxb-impl" rev="2.3.1" />
<dependency org="com.sun.xml.bind" name="jaxb-core" rev="2.3.1" />

若你的项目仅依赖javax.xml.datatype下的类,仅添加jaxb-api依赖即可满足运行时需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:04