使用Jersey客户端获取错误

时间:2013-07-23 21:26:11

标签: java json service jersey-client

我正在使用泽西客户端将数据推送到localhost。这是我的代码 -

public CloudConnection(JSONObject jsonPush) throws ClientProtocolException, IOException, JSONException {
    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    WebResource webResource = client.resource(UriBuilder.fromUri("http://localhost/visual/savedata.php").build());
    ClientResponse response = webResource.path("restPath").path("resourcePath").type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, jsonPush);
}

当我在Eclipse中执行它时,它工作正常,我的localhost上的db使用savedata.php插入了一个重新绑定。但是,一旦我制作了一个可运行的jar项目并运行jar它就会抛出错误 -

 a message body writer for java type, class org.codehaus.jettison.json.JSONObject, and MIME media type, application/json was not found

从runnable jar执行时,如何正常工作?

1 个答案:

答案 0 :(得分:1)

您必须在exectuable .jar的classpath以及Jersey .jar上拥有Jersey客户端.jar。

如果您正在使用Maven并且您应该使用Maven来构建工件,则可以使用shade插件,它将创建代码的Uberjar和所有依赖项您的代码在单个可执行文件.jar文件中。然后,您无需担心在命令行上指定所有依赖项及其传递依赖项。