A message body writer for Java class not found

前端 未结 6 843
花落未央
花落未央 2020-12-01 04:46

I am new to using JAX-RS and wrote a sample application that outputs a json object. but I am getting an exception. Here is my code:

@Path(\"/hello\")
public          


        
相关标签:
6条回答
  • 2020-12-01 05:35

    Working with Jersey 1.8, I was getting the same error while creating a JSON object and hitting a REST API from client side.

    If you are facing issue at server side then, make sure that you have correctly included jersey-json.jar in classpath and mapped correct init-param in web.xml as mentioned in other answers.

    For Client Side

    As per Jersey 1.8 documentation, the following snippet shows how to use the POJO JSON mapping feature on the client side:

     ClientConfig clientConfig = new DefaultClientConfig();
     clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
     Client client = Client.create(clientConfig);
    
    0 讨论(0)
  • 2020-12-01 05:37

    Just a small addition. In case if you do not use the web.xml descriptor file, you may enable the POJOMappingFeatire programatically as shown below

    ...
    final ResourceConfig rc = new PackagesResourceConfig("com.test.resources");
        final Map<String, Object> config = new HashMap<String, Object>();
        config.put("com.sun.jersey.api.json.POJOMappingFeature", true);
        rc.setPropertiesAndFeatures(config);
    ...
    
    0 讨论(0)
  • 2020-12-01 05:38

    I added following jars and it worked for me

    • jackson-core-asl-1.9.2.jar
    • jackson-mapper-asl-1.9.2.jar
    • jackson-xc-1.9.2.jar
    • jackson-jaxrs-1.9.2.jar
    0 讨论(0)
  • 2020-12-01 05:39

    I had the same issue: A message body writer for Java type, class java.lang.String, and MIME media type, application/json, was not found

    The problem was that the class javax.ws.rs.ext.MessageBodyWriter was taken from

    <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>2.22.2</version>
        </dependency>
    

    Was colliding with the same class from:

        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19.1</version>
        </dependency>
    
    0 讨论(0)
  • 2020-12-01 05:41

    Maven User: You just need the following 2 dependencies.

    <!-- For Jersey --> 
    <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet-core</artifactId>
            <version>2.15</version>
    </dependency>
    
    <!-- For JSON --> 
    <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>2.15</version>    
    </dependency>
    

    XML output is supported by default. So no dependency needed for it.

    0 讨论(0)
  • 2020-12-01 05:46

    I finally found my answer. I added

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.8</version>
    </dependency>
    

    to my pom.xml file. Then I added

    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    

    to my web.xml file, and everything works fine. No change was required to my code above.

    0 讨论(0)
提交回复
热议问题