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

Eclipse创建SOAP客户端报错:javax.xml.namespace包多模块访问冲突

问题描述
  • 作为Eclipse新手,按官方手册创建简单SOAP Web服务(如"Hello"),所有代码均为自动生成。
  • 自动生成的客户端代码(xxxServiceLocator、xxxServiceBindingStub)中,类似以下代码行报错:
    oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
    
  • 报错提示:the package javax.xml.namespace is accessible from more than one module: <unnamed>, java.xml
  • 已尝试:用不同选项重新创建客户端,未修改自动生成代码,问题仍存在。
新手友好的Eclipse解决步骤

这个问题是Java模块系统的包冲突导致的——javax.xml.namespace包同时来自JDK自带的java.xml模块和项目中的第三方JAR包,按以下步骤操作即可解决:

1. 排查冲突依赖

  1. 右键点击项目,选择「Properties(属性)」。
  2. 左侧菜单选「Java Build Path(Java构建路径)」,切换到「Libraries(库)」标签页。
  3. 查找是否有jaxrpc.jar、axis.jar这类SOAP相关的老版本JAR包,这类包通常会包含javax.xml.namespace类,引发冲突。

2. 处理冲突依赖

  • 如果找到上述冲突JAR包,直接选中它,点击右侧「Remove(移除)」按钮(大部分情况下,JDK自带的模块已能满足需求)。
  • 若该JAR包是项目必需的,可调整依赖优先级:
    1. 切换到「Order and Export(顺序与导出)」标签页。
    2. 将「JRE System Library」拖到冲突JAR包的上方,让系统优先使用JDK自带的java.xml模块。

3. 调整模块配置(针对Java模块项目)

如果你的项目包含module-info.java文件:

  1. 打开该文件,添加对java.xml模块的依赖声明:
    requires java.xml;
    
  2. 移除文件中对冲突JAR包的依赖声明(如果有的话)。

4. 清理重建项目

  1. 点击Eclipse顶部菜单「Project(项目)」→「Clean...(清理)」。
  2. 选中当前项目,点击「OK」完成清理。
  3. 右键项目,选择「Refresh(刷新)」,之后重新运行项目即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:44:52