我正在使用泽西客户端将数据推送到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执行时,如何正常工作?
答案 0 :(得分:1)
您必须在exectuable .jar的classpath
以及Jersey .jar上拥有Jersey客户端.jar。
如果您正在使用Maven并且您应该使用Maven来构建工件,则可以使用shade
插件,它将创建代码的Uberjar
和所有依赖项您的代码在单个可执行文件.jar文件中。然后,您无需担心在命令行上指定所有依赖项及其传递依赖项。