我有一个简单的应用程序,可以用作小程序和独立应用程序。它向 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 的清单,我不知道) . 仅当从小程序执行代码时才会出现问题。
有人可以帮我吗?