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 Réponses :
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
)
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
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>
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
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?
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)
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