Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.sun.jersey.core.header.MediaTypes
java, jax-rs, jersey, jersey-client
Solution
Generally you would get this problem when your code compiled against jersey-bundle-1.8.jar and jsr311-api-0.9.jar. But here I can see you are using `jsr311-api-1.1.1.jar`. Then next problem would be older jar file would have been loaded by the application/web server. For eg: GlassFish 3.1 one comes with Jersy 1.5( which may take precedence over your libraries).
Ideally you would need to check version of JSR-311 library is loaded (0.9 version of the jsr311-api jar is obsolete) in the server. And you should compile against jersey-bundle-1.8.jar, and run with jersey-bundle-1.8.jar and jsr311-api-1.1.1.jar
Problem
I'm trying to run a jersey client and facing this issue. WS Class: ``` 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(); } } ``` Client Class: ``` 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(); } } } ``` Issue is when I'm trying to execute the Client Class, following error message is coming ``` 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) ``` I'm using the following jars: 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