错误:
[ERROR] undefined element declaration 's:schema' line 44 of http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl [ERROR] undefined element declaration 's:schema' line 85 of http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException at com.sun.tools.internal.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:129) at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2283) at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:183) at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:126) at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429) at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190) at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159) at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)
解决方案:
参考 https://www.cnblogs.com/xdp-gacl/p/4260627.html
如下图所示:
运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:
- 将对应的wsdl文档保存到本地
2、修改wsdl文档的部分内容:将 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>
再次执行wsimport生成代码,这次使用保存在本地的WeatherWS.wsdl文件来进行生成,如下图所示:
从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了