感觉不太甘心,后来又把这个wsdl保存下来成为我本地磁盘上的wsdl文件(保存路径与wsdl2java.bin的路径一致),然后再次使用wsdl2java,这次却反而抛出了另一个异常,这个异常Cause by : null。
上网找了一下,始终没有这个新异常相关的资料。后来突然有一种直觉,它告诉我可能是wsdl2java这个小工具找不到这个wsdl文件(由于路径中存在中文字符),于是就把这个wsdl文件拷贝到磁盘根目录下,再次运行wsdl2java,新的异常终于消失了,但WSDLToJava Error: Thrown by JAXB : undefined element declaration 's:schema' 仍然冤魂不散。
后来又从网上搜了一下,看到某篇文章说到这个问题,下面将别人的文章摘录下来:
--------------------摘要部分-----------------------
cmd 运行到该目录
如E:\apache-cxf-2.0.9\apache-cxf-2.0.9\bin>wsdl2java sms.wsdl
中途遇到WSDLToJava Error: Thrown by JAXB : undefined element declaration 's:schema'异常
意思是未定义的元素声明,本来<s:import namespace="http://www.w3.org/2001/XMLSchema" />这句是声明的,但不知是何原因,就是无效。所以解决方法:把wsdl文件中的<s:element ref="s:schema" />都删除,还有声明这句。就ok了。弄了半天,才搞定。
--------------------摘要部分-----------------------
然而,我保存下来的wsdl文件与上面提及的有些出入,就是我的没有<s:import namespace="http://www.w3.org/2001/XMLSchema" />这句,不过文件中还是的的确确出现了<s:element ref="s:schema" />一句,并且控制台也提示在XX行XX列出现了问题,该行正好对应了<s:element ref="s:schema" />一句。于是立下狠心地把这一句删了!不过再次执行wsdl2java时,又一次报同样的错误,原来wsdl文件中不止一处有<s:element ref="s:schema" />一句,删除要删干净啊!!!再次执行wsdl2java,太阳终于出来了(这时貌似已经是凌晨1:06了......),java类生成成功!!!!