Проблемы с созданием jar-файлов WSC из WSDL SalesForce enterprise
Как указано в этих инструкциях, я скачал enterprise.wsdl
файл, загруженный wsc-23.jar
со страницы загрузок коннектора веб-служб и запустили следующую команду из каталога, содержащего два загруженных файла:
java -classpath wsc-23.jar com.sforce.ws.tools.wsdlc enterprise.wsdl enterprise.jar
который сгенерировал этот вывод:
[WSC23][wsdlc.run:348]Created temp dir: C:\Users\myName\AppData\Local\Temp\wsd
lc-temp-215798849-dir
[WSC23][wsdlc.<init>:110]Generating Java files from schema ...
[WSC23][wsdlc.<init>:110]Generated 290 java files.
[WSC23][wsdlc.compileTypes:298]Compiling to target default...
cannot find symbol
symbol: class RecordType
location: package com.sforce.soap.enterprise.sobject
cannot find symbol
symbol: class RecordType
location: package com.sforce.soap.enterprise.sobject
cannot find symbol
symbol: class RecordType
location: package com.sforce.soap.enterprise.sobject
cannot find symbol
symbol: class RecordType
location: package com.sforce.soap.enterprise.sobject
cannot find symbol
symbol: class RecordType
location: package com.sforce.soap.enterprise.sobject
Error: Compilation failed
Почему класс RecordType
вызывать сбой компиляции?
1 ответ
Решение
В качестве обходного пути к проблеме, которую мы обсуждали в комментариях выше, попробуйте вручную добавить RecordType
сложный тип для вашего WSDL. Вот как это должно выглядеть:
<complexType name="RecordType">
<complexContent>
<extension base="ens:sObject">
<sequence>
<element name="BusinessProcessId" nillable="true" minOccurs="0" type="tns:ID"/>
<element name="CreatedBy" nillable="true" minOccurs="0" type="ens:User"/>
<element name="CreatedById" nillable="true" minOccurs="0" type="tns:ID"/>
<element name="CreatedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
<element name="Description" nillable="true" minOccurs="0" type="xsd:string"/>
<element name="DeveloperName" nillable="true" minOccurs="0" type="xsd:string"/>
<element name="IsActive" nillable="true" minOccurs="0" type="xsd:boolean"/>
<element name="IsPersonType" nillable="true" minOccurs="0" type="xsd:boolean"/>
<element name="LastModifiedBy" nillable="true" minOccurs="0" type="ens:User"/>
<element name="LastModifiedById" nillable="true" minOccurs="0" type="tns:ID"/>
<element name="LastModifiedDate" nillable="true" minOccurs="0" type="xsd:dateTime"/>
<element name="Localization" nillable="true" minOccurs="0" type="tns:QueryResult"/>
<element name="Name" nillable="true" minOccurs="0" type="xsd:string"/>
<element name="NamespacePrefix" nillable="true" minOccurs="0" type="xsd:string"/>
<element name="SobjectType" nillable="true" minOccurs="0" type="xsd:string"/>
<element name="SystemModstamp" nillable="true" minOccurs="0" type="xsd:dateTime"/>
</sequence>
</extension>
</complexContent>
</complexType>
Как я упоминал выше, это похоже на ошибку в поколении WSDL, поэтому я бы рекомендовал также подать заявку с поддержкой SFDC.