在最初将已完成的项目加载到eclipse中进行更改后,我在包含的WSDL中的3个组件上收到错误。
错误
“src-resolve:无法将名称'tns:AEExceptionBO'解析为(n)'type> definition'组件。”
三要素
* submitCallFault1_submitCallFault
* getOutageStatusFault1_getOutageStatusFault
* getOutageCircuitFault1_getOutageCircuitFault
据我所知,当前存在的导入(wsdl的第8行)应正确加载xsd文件,项目中不存在其他错误。有谁知道为什么eclipse无法处理这个wsdl?
WSDL (相关部分)
<wsdl:definitions name="AEAdmsAecServiceDelegate"
targetNamespace="http://www.orgname.com/esd/adms/aecall/V1"
xmlns:tns="http://www.orgname.com/esd/adms/aecall/V1"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="http://www.orgname.com/esd/adms/aecall/V1">
<xsd:import namespace="http://www.orgname.com/esd/aeservices/lib/V1"
schemaLocation="wsdl/AEAdmsAecService/AEExceptionBO.xsd" />
<xsd:element name="submitCallFault1_submitCallFault"
nillable="true" type="bons0:AEExceptionBO" />
<xsd:element name="getOutageStatusFault1_getOutageStatusFault"
nillable="true" type="bons0:AEExceptionBO" />
<xsd:element name="getOutageCircuitFault1_getOutageCircuitFault"
nillable="true" type="bons0:AEExceptionBO" />
</xsd:schema targetNamespace>
XSD (在一个子目录中,由WSDL导入)
<xsd:schema targetNamespace="http://www.orgname.com/esd/aeservices/lib/V1"
xmlns:bons0="http://www.orgname.com/esd/aeservices/lib/V1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:include schemaLocation="NameValueBO.xsd" />
<xsd:complexType name="AEExceptionBO">
<xsd:sequence>
<xsd:element minOccurs="1" name="appName" type="xsd:string" />
<xsd:element minOccurs="0" name="moduleName" type="xsd:string" />
<xsd:element minOccurs="1" name="errorCode" type="xsd:string">
</xsd:element>
<xsd:element minOccurs="1" name="message" type="xsd:string" />
<xsd:element minOccurs="1" name="exceptionTime" type="xsd:dateTime">
</xsd:element>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="nameValues"
type="bons0:NameValueBO">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
WSDL和其他已加载的xsd文件的不相关部分已被省略。
答案 0 :(得分:1)
通常,这可能是通过将多个架构导入同一命名空间引起的。我注意到WSDL模式位于targetNamespace
的{{1}}中,但是它下面的第一个操作是将另一个xsd导入到同一个名称空间中。我认为这里发生的事情是eclipse可能正在采取其中一种,然后未能在该命名空间中找到正确的类型定义。
考虑对这两个名称空间进行去冲突,以便每个文件使用一个名称空间。 Read this related question - 这可能有助于理解。导入应该用于引入另一个命名空间,并且include应该用于制作几个不同的文件,它们共同定义一个命名空间。