【发布时间】:2013-08-14 15:15:26
【问题描述】:
我有一个简单的应用程序,可以用作小程序和独立应用程序。
它向 REST 服务发送请求并尝试显示结果为 List<City>。
城市类代码如下:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class City implements Serializable {
private Integer cityId;
private String name;
public Integer getCityId() {
return cityId;
}
public void setCityId(Integer cityId) {
this.cityId = cityId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
它使用 jersey-bundle-1.17 发送请求并获得响应。
发送请求和获取响应的代码:
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client c = Client.create(clientConfig);
List<City> result = c.resource(resource url here).get(new GenericType<java.util.List<City>>(){});
构建应用程序后,我有两个 jar 文件 - MyJar.jar 和我的应用程序和 jersey-bundle-1.17.jar。球衣的类路径在 MyJar.jar 的清单中指定。
当我将我的 jar 文件作为独立应用程序 (java -jar MyJar.jar) 运行时,一切正常,请求被发送,响应被接收并反序列化到 List<City>。
当我在发送小程序(在 html 页面或 appletviewer 中)请求时运行我的 jar 文件时,会收到响应,但它无法反序列化对 List<City> 说的响应
A message body reader for Java class java.util.List, and Java type java.util.List<City>, and MIME media type application/json was not found
我尝试将 JacksonJsonProvider.class 添加到 Jersey 提供程序列表中,尝试仅反序列化到 String、City[] - 它总是说从 applet 运行时找不到合适的消息正文阅读器。作为桌面应用程序运行时一切正常。
Applet 肯定会加载 jersey-bundle jar,因为我在服务器访问日志中看到它并发送了请求,但它看起来加载不正确(也许它在加载时忽略 jersey-bundle jar 的清单,我没有'不知道)。只有在从小程序执行代码时才会出现问题。
谁能帮帮我?
【问题讨论】:
标签: java json applet jersey-client