gpt4 book ai didi

javax.ws.rs.WebApplicationException : com. sun.jersey.api.MessageException:Jersey 的 Java REST Web 服务中的 JSON 支持

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:33 25 4
gpt4 key购买 nike

好吧,这个问题以前可能有人问过,但在我看过的所有网站上,关于“如何做”的解释告诉我我做的完全正确。

我知道我不是,因为我在本地主机 tomcat 上收到 500 服务器错误,并且在我的服务器日志中收到以下错误:

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

所以,我想做的是用 Jersey(用 Java)开发一个 RESTful 网络服务。一切都很好,除了我想返回 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;
}
}

这是我的 web.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.jarjersey-client-1.17.1.jarjersey-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

谁能看到我没看到的,谁就能得到一杯啤酒。或者至少是我永远的感激之情,因为我已经看这个太久了,但我仍然看不到它。

最佳答案

好吧,我发现 orid 的答案是正确的:我只需要添加一些额外的库!

我可能忽略了它,或者大多数教程可能假设你立即添加了你用 Jersey 下载的所有库......

所以这解决了问题:添加

  • 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,你拯救了我的周末。

关于javax.ws.rs.WebApplicationException : com. sun.jersey.api.MessageException:Jersey 的 Java REST Web 服务中的 JSON 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21367158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com