2
votes

IllegalAnnotationExceptions dans la classe MemberSubmissionEndpointReference

Je me bats avec ce problème depuis 2 jours maintenant. J'ai besoin d'aide

J'utilise Spring mvc et tout semble. J'ajoute le client d'un autre webservice en tant que dépendance, puis quand j'essaye de tester, j'obtiens cette exception.

XML1:
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.5</version>

XML2:
<dependency>
    <groupId>javax.xml.ws</groupId>
    <artifactId>jaxws-api</artifactId>
    <version>2.2.5</version>
</dependency>

En faisant une analyse plus approfondie, je vois que ces conflits (adresse / élément ) existent dans la classe com.sun.xml.ws.developer.MemberSubmissionEndpointReference qui appartient à l'une de mes dépendances

<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.5</version>

Et l'autre classe javax.xml.ws.wsaddressing.W3CEndpointReference auquel il appartient est probablement dans le client que j'ai dans ma dépendance.

Comment puis-je résoudre ce problème !! ce ne sont pas mes classes donc je ne peux pas les modifier. Je ne sais pas trop quoi faire. J'ai essayé les exclusions, la liaison ..etc et rien n'a fonctionné

EDIT:

J'utilise Eclipse pour l'IDE et websphere comme serveur d'application. Voici les 2 dépendances xml qui sont en conflit

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "address". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address
        at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address com.sun.xml.ws.developer.MemberSubmissionEndpointReference.addr
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
    this problem is related to the following location:
        at javax.xml.ws.wsaddressing.W3CEndpointReference$Address
        at private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address
        at javax.xml.ws.wsaddressing.W3CEndpointReference
Two classes have the same XML type name "elements". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
        at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
    this problem is related to the following location:
        at javax.xml.ws.wsaddressing.W3CEndpointReference$Elements
        at private javax.xml.ws.wsaddressing.W3CEndpointReference$Elements javax.xml.ws.wsaddressing.W3CEndpointReference.referenceParameters
        at javax.xml.ws.wsaddressing.W3CEndpointReference

Si je mets à niveau xml1 vers la version 2.3.5, le problème est résolu mais le problème est que la version 2.3.5 est respectée dans Java 8 et le reste de mon application est Java 7 (je suis verrouillé par le travail) et génère une erreur de compatibilité. Je cherche donc d'autres moyens de résoudre ce problème


3 commentaires

est-il possible pour vous de publier des dépendances maven?


Je pense que tout le monde pourrait être une meilleure aide si vous postez. Quel est votre IDE, votre serveur d'applications et votre pom.xml avec les dépendances supposées en conflit


@HassamAbdelillah Veuillez voir la réponse modifiée


3 Réponses :


0
votes

Il y a un conflit de dépendances. Je ne peux pas dire la solution exacte jusqu'à ce que vous publiiez le pom.xml complet, mais voici comment je résoudrais cela: dans intellij idea ide , installez le plugin "Maven Helper", redémarrez l'IDE, ouvrez pom et en bas, ouvrez l'onglet dependency analizer . Là, vous avez des conflits et un moyen simple d'exclure les paquets en conflit en 1 clic.

ici gars a eu le même problème, et il est passé par des pots de filtrage mains, une par une.

UPD. a également trouvé ce problème , n'avez-vous pas essayé d'augmenter la version de cette lib à la dernière 2.3.2 ? (semble être corrigé dans 2.2.8 )


4 commentaires

Bonjour, je sais d'où vient le conflit mais je ne sais pas comment le résoudre. Comme je l'ai dit, le jaxws-rt 2.2.5 (ou 2.2.8) a une classe qui est en conflit avec la bibliothèque cliente Iam (le code de bibliothèque client est généré à l'aide de JAX-WS RI 2.2.10). Le lien que vous avez partagé concerne Metro que je n'utilise pas Le problème est essentiellement un conflit entre l'implémentation IBM et l'implémentation Sun


Avez-vous essayé une approche avec le plugin maven helper que j'ai pointé?


Le truc, c'est que j'utilise eclipse. Je n'ai pas beaucoup de flexibilité pour installer un nouvel IDE car il s'agit d'un ordinateur de travail. Y a-t-il une chose équivalente dans l'éclipse?


Au fait, si j'utilise la version 2.3.2, le problème disparaît, mais j'obtiens une erreur au démarrage en me plaignant d'incompatibilité de version (ma websphere exécute 1.7 mais la bibliothèque est en 1.8). Je ne sais pas comment aller au-delà de ça



0
votes

Le problème possible est le conflit jaxws-api qui contient W3CEndpointReference qui a la méthode static Address .

jaxws-rt contient jaxws-api donc, je suggère d'aller dans Dependency Hierarchy dans Eclipse et de vérifier quels artefacts utilisent jaxws-api et essayez de l'exclure de celui dont vous pensez ne pas avoir besoin.

Sur une note latérale, jaxws-rt contient MemberSubmissionEndpointReference qui contient également Address en tant que membre. Donc, la solution possible qui vaut la peine d'être essayée est d'exclure jaxws-api de jaxws-rt mais votre jaxws-rt peut ne pas fonctionner comme prévu. < / p>


1 commentaires

J'ai essayé votre suggestion de l'exclure, j'obtenais une erreur différente pour la bibliothèque exclue, donc cette option ne fonctionne pas. Je n'arrive pas à trouver une autre bibliothèque utilisant jaxws-api



0
votes

Je pense qu'il n'est pas nécessaire d'ajouter ces apis en tant que dépendances dans votre pom.xml. Il y a déjà inclus dans le JDK par défaut (rt.jar). Je ne vois pas dans quel cas vous devez les définir comme dépendances dans votre pom.xml.

En plus du code source de ces classes, il y a différents espaces de noms déclarés qui ont ces éléments en conflit:

Dans MemberSubmissionEndpointReference

private W3CEndpointReference.Address address;
@XmlElement(
    name = "ReferenceParameters",
    namespace = "http://www.w3.org/2005/08/addressing"
)

Et dans W3CEndpointReference

@XmlElement(
    name = "Address",
    namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing"
)
public MemberSubmissionEndpointReference.Address addr;

Donc la question est: pourquoi chargez-vous ces dépendances directement dans votre pom.xml?

MODIFIER 2: EN TENANT QUE VOUS DEVEZ GARDER VOS DEPENDANCES ACTUELLES

Vous semblent vouloir télécharger deux versions de la même application Web avec de légères différences.

Vous pouvez faire ce qui est conseillé dans ce JBoss AS Thread , gardez les Jars minimaux dans votre websphere afin de maintenir votre application en cours d'exécution.

En plus d'une tâche plus complexe. Quel est le rôle de ces classes et API dans votre application?


3 commentaires

Ce sont des projets déjà assez importants. Lorsque je les ai supprimés, des plantages au démarrage se sont produits à gauche et à droite et le service n'a jamais démarré.


Lors de la vérification de ces classes dans le code source de votre projet. pointent-ils vers rt.jar dans JDK 7 ou vers les dépendances que vous avez publiées?


Comment puis-je vérifier? La recherche d'un fichier ne recherche pas la dépendance de la dépendance (la dépendance 2 provient du fichier POM d'une dépendance)