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

Axis2 v1.8生成SOAP客户端Stub时出现NoSuchMethodException错误

Eclipse结合Axis2 1.8.x生成SOAP客户端Stub报错解决方案

问题场景

  • 环境:Eclipse 2024-03 (4.31.0),需从Axis2 v1.7.9升级至v1.8.x生成第三方SOAP服务的客户端Stub
  • 操作流程:
    • 解压Axis2 v1.8.x安装包
    • Eclipse偏好设置中指定Axis2安装目录
    • 创建Web服务项目并导入目标WSDL文件
    • 右键WSDL选择「生成客户端」,指定Apache Axis2为运行时、Tomcat 8.5为服务器运行时
  • 触发报错,核心异常信息:
Exception occurred during code generation for WSDL  : null
java.lang.NoSuchMethodException: org.apache.axis2.wsdl.codegen.CodeGenConfiguration.<init>(java.util.Map)
    at java.base/java.lang.Class.getConstructor0(Class.java:3585)
    at java.base/java.lang.Class.getConstructor(Class.java:2271)
    at org.eclipse.jst.ws.axis2.consumption.core.command.Axis2ClientCodegenCommand.execute(Axis2ClientCodegenCommand.java:157)
    // 后续堆栈信息省略

注:Axis2 v1.7.9可正常生成,v1.8.0、v1.8.2均失败

原因分析

Eclipse自带的WST Axis2插件(org.eclipse.jst.ws.axis2.consumption.core)基于旧版Axis2 API开发,Axis2 1.8.x对CodeGenConfiguration类进行了重构,移除了接收java.util.Map参数的构造方法,插件通过反射调用该构造方法时触发NoSuchMethodException,属于插件与新版本Axis2的兼容性问题。

解决方案

方案1:使用Axis2官方命令行工具生成客户端(推荐)

绕过Eclipse插件的兼容性限制,直接用Axis2原生工具生成代码:

  1. 下载Axis2 1.8.x的bin安装包(包含wsdl2java工具)
  2. 打开终端,进入Axis2安装目录的bin文件夹
  3. 执行生成命令:
wsdl2java -uri /本地WSDL文件路径/xxx.wsdl -p 自定义包名(如com.xxx.client) -o 输出目录路径
  1. 将生成的Java代码复制到Eclipse项目中,添加Axis2 1.8.x的所有核心依赖jar包到项目构建路径

方案2:降级Eclipse版本(不推荐)

选择与Axis2 1.8.x兼容的旧版Eclipse(如2021-09及更早版本),这类版本的Axis2插件可能适配了1.8.x的API,但需注意旧版Eclipse可能存在安全漏洞。

方案3:手动修改Eclipse Axis2插件(进阶)

针对插件代码进行适配修改:

  1. 找到Eclipse安装目录下的org.eclipse.jst.ws.axis2.consumption.core_xxx.jar文件
  2. 反编译Axis2ClientCodegenCommand类,修改构造CodeGenConfiguration的逻辑:替换原反射调用Map参数构造方法的代码,改为使用无参构造+setter方法设置配置
  3. 重新打包插件jar并替换原文件(操作有风险,需熟悉Eclipse插件开发)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:05:09