класса javax.с WS.РС.WebApplicationException: ком.солнце.Джерси.прикладной программный интерфейс.MessageException: поддержка JSON в веб-сервисах JAVA REST с Джерси

хорошо, этот вопрос, вероятно, задавали раньше, но на всех сайтах я посмотрел объяснение "как это сделать" говорит мне, что я делаю это совершенно правильно.

Я знаю, что нет, так как я получаю ошибку сервера 500 на моем localhost tomcat, и я получаю следующую ошибку в своих журналах сервера:

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.myapp.domain.Location, and Java type class com.myapp.domain.Location, and MIME media type application/json was not found

Итак, то, что я пытаюсь сделать, это разработать веб-сервис RESTful с Jersey (на Java). Все идет хорошо, за исключением того, что я хочу вернуть JSON. Я не могу найти, чем я отличаюсь от этих людей:

мой POJO (местоположение) выглядит так:

package com.myapp.domain;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement()
public class Location {
    private int id;
    private double longtitude;
    private double latitude;

    public Location() {
        new Location(-1, -1, -1);
    }

    public Location(double longtitude, double latitude) {
        new Location(-1, longtitude, latitude);
    }

    public Location(int id, double longtitude, double latitude) {
        this.id = id;
        this.longtitude = longtitude;
        this.latitude = latitude;
    }

    public void setID(int id) {
        this.id = id;
    }

    public void setLongtitude(double longtitude) {
        this.longtitude = longtitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public int getID() {
        return this.id;
    }

    public double getLongtitude() {
        return this.longtitude;
    }

    public double getLatitude() {
        return this.latitude;
    }
}

мой ресурс выглядит так:

package com.myapp.MyAPP;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.myapp.domain.Location;

@Path("Locations")
public class LocationInfo {
    @GET
    @Path("/get/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public Location getLocation(@PathParam("id") int id) {
        Location loc = new Location(3, 4.007391, 51.00237);
        return loc;
    }
}

а это моя паутина.XML-код:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="WebApp_ID" 
        version="2.5">  
    <display-name>MyAPP</display-name> 
    <servlet> 
            <servlet-name>MyAPP REST Service</servlet-name> 
            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
            <init-param> 
                <param-name>com.sun.jersey.config.property.packages</param-name> 
                <param-value>com.myapp.MyAPP</param-value>
            </init-param>
            <init-param>
                <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
                <param-value>true</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
            <servlet-name>MyAPP REST Service</servlet-name> 
            <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping>
</web-app>

у меня есть эти библиотеки входят: asm-3.1.jar, jersey-client-1.17.1.jar, jersey-core-1.17.1.jar, jersey-json-1.17.1.jar, jersey-server-1.17.1.jar, jersey-servlet-1.17.jar, jsr11-api-1.1.1.jar

тот, кто видит то, чего я не вижу, получает пиво. Или, по крайней мере, моя вечная благодарность, потому что я смотрю на это слишком долго и до сих пор не вижу.

1 ответов


хорошо, так что я оказался orid имел правильный ответ: мне просто нужно было добавить некоторые дополнительные библиотеки!

Я, вероятно, пропустил его или большинство учебников, вероятно, предположим, вы добавляете все библиотеки, которые вы загружаете с Джерси сразу...

таким образом, это исправило проблему: добавление

  • 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

еще раз спасибо orid, вы только что спасли мой выходные.