Exception in thread “main” java.lang.NoClassDefFoundError: impossible d'initialiser la classe com.soleil.jersey.de base.l'en-tête.MediaTypes
Je suis en train de lancer un maillot client et face à cette problématique.
WS Classe:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/hello")
public class HelloWorldService {
@GET
@Path("/vip")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@QueryParam("msg") String msg) {
String output = "Jersey say : " + msg;
return Response.status(200).entity(output).build();
}
}
Classe Client:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
public class JerseyClientGet {
public static void main(String[] args) {
try {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:8080/TestRest/rest/hello/vip?msg=ABCD");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("Output from Server .... \n");
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Problème est quand je suis en train d'exécuter la Classe Client, le message d'erreur suivant est à venir
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.sun.jersey.core.header.MediaTypes
at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:182)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
at com.sun.jersey.api.client.Client.init(Client.java:342)
at com.sun.jersey.api.client.Client.access$000(Client.java:118)
at com.sun.jersey.api.client.Client$1.f(Client.java:191)
at com.sun.jersey.api.client.Client$1.f(Client.java:187)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.api.client.Client.<init>(Client.java:187)
at com.sun.jersey.api.client.Client.<init>(Client.java:159)
at com.sun.jersey.api.client.Client.create(Client.java:669)
at com.mkyong.client.JerseyClientGet.main(JerseyClientGet.java:12)
Je suis en utilisant le jars suivants:
asm-3.1.jar,
jackson-core-asl-1.9.2.jar,
jackson-jaxrs-1.9.2.jar,
jackson-mapper-asl-1.9.2.jar,
jackson-xc-1.9.2.jar,
jersey-bundle-1.8.jar,
jersey-client-1.18.jar,
jersey-core-1.18.jar,
jersey-json-1.18.jar,
jersey-server-1.18.jar,
jersey-servlet-1.18.jar,
jettison-1.1.jar,
jsr311-api-1.1.1.jar
jersey-core est nécessaire je pense. Vérifiez si vous avez MediaTypes classe dans ce pot.
Avez-vous le même message d'erreur dans la console de Serveur aussi?
Merci pour la réponse rapide, je suis bien à l'aide de jersey-core-1.18.jar qui contient MediaTypes classe. Mais encore sa montrant cette Exception
eh bien, mon WS classe est déployé dans tomcat, où il n'y a pas d'exception, mais la classe Client, je suis d'exécution en tant que méthode principale.
Avez-vous le même message d'erreur dans la console de Serveur aussi?
Merci pour la réponse rapide, je suis bien à l'aide de jersey-core-1.18.jar qui contient MediaTypes classe. Mais encore sa montrant cette Exception
eh bien, mon WS classe est déployé dans tomcat, où il n'y a pas d'exception, mais la classe Client, je suis d'exécution en tant que méthode principale.
OriginalL'auteur anij | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
Généralement, vous obtenez ce problème lors de votre code compilé contre jersey-bundle-1.8.jar et jsr311-api-0.9.jar. Mais ici, je peux voir que vous êtes en utilisant
jsr311-api-1.1.1.jar
. Puis ensuite, le problème serait plus âgés fichier jar aurait été chargé par l'application/serveur web. Pour exemple: GlassFish 3.1 l'on vient avec Jersy 1.5( qui peut prendre la priorité sur vos bibliothèques).Idéalement, vous devez vérifier la version de la JSR-311 de la bibliothèque est chargé (version 0.9 de la jsr311-api pot est obsolète) dans le serveur.
Et vous devez compiler contre jersey-bundle-1.8.jar et courir avec jersey-bundle-1.8.jar et jsr311-api-1.1.1.jar
Pensez-vous qu'il fonctionne
Oui sa fonctionne bien maintenant, j'ai juste ajouter ces pots dans mon apache-tomcat-7.0.42 serveur du dossier lib, et redémarré le serveur, maintenant, sa fonctionne bien. Merci beaucoup de l'homme!
Vous pouvez accepter la réponse si vous a aidé 😉
bien comment faire, j'ai essayé de voter mais comme ma réputation est en dessous de 15, je ne peux pas.
OriginalL'auteur Satheesh Cheveri
Dans mon cas, je n'étais pas en tirant dans le jersey-core bocal comme un moteur d'exécution de dépendance. Une fois que j'ai ajouté il semblait aller bien.
$mvn dependency:tree
), mais si ce n'est pas la bonne version alors oui, vous aurez besoin de demander et indiquer de manière explicite la version que vous voulez.OriginalL'auteur sudhir mohanraj
Pour les adeptes, ces (avec mockito dans ce cas, mais le genre de générique):
signifiait: "vous avez une dépendance jersey-core 1.0.2 et également à la dépendance sur le maillot-client 1.11" (nécessité de match de base avec les versions de client de plus près). Malheureusement, "serveur" et "client" à la fois utiliser la "base" donc, dans la fin, ils ont pratiquement tous ont précisément 😐
OriginalL'auteur rogerdpack