錯誤:
[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目錄,就可以看到生成的代碼了