Comment éviter les conflits de dépendances lors de l'utilisation de dropwizard + maillot client
J'ai un DropWizard API REST écrits et les œuvres. L'une des ressources les points de terminaison en fait écrit un e-mail, cependant dès que j'ajoute les dépendances suivantes DropWizard commence à tomber en panne au démarrage
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.18.1</version>
</dependency>
La DropWizard dépendance est:
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>0.8.1</version>
</dependency>
L'erreur au démarrage est très long, résumées ci-dessous
WARN [2015-05-01 20:06:08,887] org.glassfish.jersey.internal.Errors: The following warnings have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 2
java.lang.NullPointerException
at com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.setConfiguration(AbstractJAXBProvider.java:113)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
....
MultiException stack 2 of 2
java.lang.IllegalStateException: Unable to perform operation: method inject on com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:395)
....
MultiException stack 3 of 3
java.lang.IllegalStateException: Unable to perform operation: create on org.glassfish.jersey.message.internal.MessageBodyFactory
...
Je devine DropWizard est à l'aide d'un autre conflit de dépendance alors, comment puis-je gérer cela?
Merci d'avance
OriginalL'auteur Manish Patel | 2015-05-01
Vous devez vous connecter pour publier un commentaire.
Dropwizard 0.8.x utilise Jersey 2.x qui, naturellement, est en conflit avec votre Maillot 1.x dépendances.
Je pense que ça pourrait être bien avec
jersey-client
tant que vous n'avez pasdropwizard-client
dépendance maisjersey-core
le conflit en de nombreux points avec dropwizard maillot de laquelle je ne pense pas que vous pouvez résoudre. Et aussi je ne pense pas que vous auriez besoin dejersey-core
pour l'envoi d'e-mail de toute façon.Si vous avez besoin de maillot pour cela, essayez d'utiliser Jersey 2.16 à la place qui est la version dropwizard.
J'ai eu le même problème, si votre parent projet maven est dropwizard, vous pouvez omettre le maillot de la version de votre dépendance et tout est bien. Ma mère n'est pas dropwizard, donc mvn dependency:tree va révéler le besoin de maillot de version (pour DW 0.9.3.s 2.22.1)
OriginalL'auteur Natan
J'ai eu le même problème (je suis en utilisant DW 0.9.2 et indésirables dépendances transitives des deux DW 0.7.2 et Jersey 1.x)
La solution était assez simple: dans la dépendance que de vous apporter ces deux de la famille des bibliothèques, de déclarer un
exclusion
et cela devrait fonctionner, par exemple, c'est la façon dont je l'ai fait dans Gradle:La syntaxe de Maven est assez similaire (plus prolixe en fait 😉 )
Espère que cela aide quelqu'un.
OriginalL'auteur Clint Eastwood