我正在使用 Jersey 客户端将数据推送到本地主机。这是我的代码 -
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 中执行此操作时,它工作正常,并且使用 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
从可运行的 jar 执行时如何使其正常工作?
最佳答案
您必须在可执行 .jar 和 Jersey .jar 的类路径
上拥有 Jersey 客户端 .jar。
如果您正在使用 Maven 并且应该使用 Maven 来构建您的工件,您可以使用 shade
插件,它将创建您的 Uberjar
代码以及代码的所有依赖项都位于单个可执行 .jar 文件中。那么您就不必担心在命令行上指定所有依赖项及其传递依赖项。
关于java - 使用 Jersey 客户端时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821382/