[JAVA] gestion des erreurs wsimport (une classe / interface avec le même nom "xxx" est déjà utilisée)

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.

Message d'erreur

En japonais

[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.

En anglais

[ERROR] A class/interface with the same name "xxx" is already in use. 
Use a class customization to resolve this conflict.

Causes et contre-mesures

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.

référence

Recommended Posts

gestion des erreurs wsimport (une classe / interface avec le même nom "xxx" est déjà utilisée)
Nom de route non valide, déjà utilisé: Comment résoudre l'erreur dans "nouvelle_session_utilisateur"
Lors du téléchargement d'un fichier avec Spring Boot, la gestion des erreurs est effectuée lorsque la taille maximale du fichier est dépassée.
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
Java learning_Behavior lorsqu'il y a un champ avec le même nom et une méthode avec le même nom dans deux classes dans une relation d'héritage
Gestion des exceptions avec une interface fluide
Erreur lors de la finalisation du membre de la classe Entity utilisé dans SpringWebFlux
Qu'est-ce qu'une classe en langage Java (2 /?)
Nommer et appeler explicitement des méthodes de classe parent dans Ruby
N'y a-t-il pas un conflit de nom lorsque enum a le même nom dans l'instruction switch?
Androd: Que faire à propos de "Le Royaume est déjà dans une transaction d'écriture dans"
Quand tu te perds dans le nom de la classe
Principes de base de la gestion des erreurs Java - L'histoire qui capture n'est prise qu'au premier plan
Un avertissement s'affiche lorsque vous essayez d'utiliser un entier énorme avec les variables spéciales $ 1, $ 2, $ 3 ...