J'utilise jersey pour mon projet et j'essaie d'analyser un URI à partir d'une chaîne.
UriBuilder.fromUri("http://localhost:8000").build();
Le code est simple, mais j'obtiens une erreur ci-dessous
Java.lang.ClassNotFoundException: org.glassfish.jersey.internal.RuntimeDelegateImpl
Il semble que le programme ne trouve pas le délégué. J'ai déjà importé javax.ws.rs.core.UriBuilder
et avoir jersey-common 2.0
qui devrait contenir le délégué dans mon chemin de génération. Mais je reçois toujours cette erreur.
Est-ce que quelqu'un sait comment le réparer? Merci!
Si vous utilisez Maven, utilisez la dépendance suivante:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.22.2</version>
<scope>test</scope>
</dependency>
Pour Gradle, les éléments suivants fonctionneront:
testCompile 'org.glassfish.jersey.core:jersey-common:2.22.2'
En développant contre un runtime Wildfly 10.1, je ne voulais pas introduire Jersey dans mes builds. Avec Gradle j'ai utilisé
testRuntime "org.jboss.resteasy:resteasy-jaxrs:$versions.resteasy"
la version resteasy est 3.0.19.Final. Ce pot contient
META-INF/services/javax.ws.rs.ext.RuntimeDelegate
avec une entrée
org.jboss.resteasy.spi.ResteasyProviderFactory
Dans mon cas, le problème était lié à l'utilisation d'un autre Jar nommé: javax.ws.rs-api-2.0.jar
La suppression de ce pot a résolu mon problème.
Le pot que j'ai utilisé:
<include name="jersey-client-1.9.jar" />
<include name="jersey-core-1.9.jar" />
<include name="jersey-multipart-1.9.jar" />
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.26</version>
<scope>test</scope>
</dependency>
J'ai rencontré des problèmes avec Java 8 et jersey-common 2.22.2 mais 2.26 ont fonctionné.