由于同事的工作空间在这个目录下,如下图所示
![9c6c383d9b084bcf66d993e4d8e94a58.png](https://i-blog.csdnimg.cn/blog_migrate/d29f2c8b9dac74f413cb2d46cfd04c5b.jpeg)
他将webservice定义语言文件从webservice网上保存下来之后起名为wether.wsdl, 之后便在cmd中切换到项目的src目录中, 然后执行wsimport -keep E:lgWorkspacingWetherClientwether.wsdl
结果就报错了,然后查了网上的资料也没有解决, 然后他告诉我说从网上操作别的wsdl文件的时候就能自动生成webservice 的客户端代码,可是天气预报的就是不行, 之后我分析了一下,天气预报的应用服务后台可能不是用java语言写的, 之后搜集了一些资料, 发现这个wether.wsdl确实有问题,之后我找到了问题的原因,如下图所示:
![d54e2c8318e5f86b8838e07aaaba360d.png](https://i-blog.csdnimg.cn/blog_migrate/818ab2b800ef8496d9ac8e41a3dc166f.jpeg)
其中15行,61行,101行报错,然后我查看wether.wsdl 发现他们有个共性就是
这个标签,之后我参考net的规则与java的异同点,发现这个文件确实有问题,于是就将这个标签改为了, 之后再次运行
wsimport -keep E:lgWorkspacingWetherClientwether.wsdl
客户端的代码就自动生成了。然后由服务器端在客户端的存根调用代理方法的时候执行成功!
通过今天问题的分析,总结如下:有时候我们调用wsdl的时候,由于文件平台的不同,生成这个文件的时候里面的标签语法也会有所不同,如果不能正常的生成客户端代码,那你就应该考虑下是不是这个文件本身有问题,如果有问题那么在网上找相关的资料,基本上都可以解决!