最初将完整的项目加载到Eclipse之后,以进行更改,我会在包含的WSDL内的3个组件上遇到错误。
错误
" src-resolve:无法解析名称'tns:aeexceptionbo'到(n)'type>"定义"组件。"
这三个要素
*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文件的部分。
通常,这可能是由于将多个模式导入到同一名称空间中而引起的。我注意到WSDL架构在http://www.orgname.com/esd/aeservices/lib/V1
的targetNamespace
中,但是下面的第一个动作是将其他XSD导入到同一名称空间中。我认为这里发生的事情是Eclipse可能会采用一个或另一个,然后未能在该名称空间中找到适当的类型定义。
考虑将这两个命名空间进行解密,以便每个文件使用一个名称空间。阅读此相关问题 - 它可能有助于在这里理解。导入应该用于拉出另一个命名空间,并且应该使用inclage将几个不同的文件共同定义一个单个名称空间。