java - 使用 Jersey 客户端时出现错误

标签 java json service jersey-client

我正在使用 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/

相关文章:

c# - 将空 XML 元素反序列化为 Guid.Empty

java - 设计基准测试

python - 无法获取json中存储的某些项目的对应值

Java Servlet - 打印到 Eclipse 控制台

java - 如何从父类(super class)为查看器注册选择提供程序

Java NoClassDefFoundError,不确定出了什么问题

javascript - 从 Mysql 创建 JSON 响应的更智能方法

android - 启动和停止服务

android - 打瞌睡时在后台运行应用程序

java - Selenium moveToElement() 读取工具提示不起作用