Le message d'erreur qui s'est produit dans wsimport
utilisé pour générer automatiquement le code client Soap pour Java est en japonais, et je n'ai pas pu le trouver s'il s'agissait d'informations japonaises, j'ai donc fait un petit détour, alors remarquez.
[ERROR]Même nom"xxxxxx.SampleResponse"une sorte de/L'interface est déjà utilisée.
Utilisez la personnalisation de classe pour résoudre ce conflit.
[ERROR] A class/interface with the same name "xxx" is already in use.
Use a class customization to resolve this conflict.
Il y a deux causes possibles.
--Doublon de nom en raison de la spécification arbitraire du nom du package en spécifiant l'option -p
--La valeur de l'attribut name est dupliquée dans wsdl ... Cela peut se produire si le côté serveur est .NET (extension asmx).
Dans le premier cas, il peut être résolu en exécutant wsimport
sans spécifier l'option -p
(c'est-à-dire selon wsdl
).
Dans mon cas, c'était ce dernier. Plus précisément, il semble mauvais qu'il y ait une définition avec le même nom () comme la suivante SampleResponse
.
Si vous supprimez l'une des définitions, l'erreur en double disparaît, mais elle finit par être une erreur car elle est référencée par la méthode.
hoge.wsdl
<s:element name="SampleResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Response" nillable="true" type="tns:SampleResponse" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="SampleResponse">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Result" type="tns:SampleResponseResult" />
<s:element minOccurs="0" maxOccurs="1" name="ApplicationResponse" type="tns:SampleResponseApplicationResponse" />
</s:sequence>
</s:complexType>
Comme contre-mesure dans ce cas, spécifiez les options suivantes dans la commande wsimport
. Notez qu'il n'y a pas d'espace après -B.
-B-XautoNameResolution
Dans ce cas, les classes «SampleResponse» et «SampleResponse2» sont générées, donc modifiez-les comme il convient.