【问题标题】:Access JSON Webservice with Java使用 Java 访问 JSON Web 服务
【发布时间】:2015-07-09 13:16:41
【问题描述】:

我正在尝试访问网络服务(文档:http://docs.bittpublic.apiary.io/#reference/public-http-api/ticker/gets-the-current-ticker-data-for-a-given-currency-pair)。我需要从此 JSON 中获取信息,即响应中的“volume”字段。但是我在客户端构建器中遇到了问题。检查我的代码/错误:

代码:

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;

Client client = ClientBuilder.newClient();
Entity payload = Entity.json("{  'productPair': 'BTCUSD'}");
Response response = client.target("https://api.bitt.com:8400")
         .path("/ajax/v1/GetTicker")
         .request(MediaType.APPLICATION_JSON_TYPE)
         .post(payload);

System.out.println("status: " + response.toString());

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/jersey/internal/util/collection/UnsafeValue
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2663)
    at java.lang.Class.getConstructor0(Class.java:3067)
    at java.lang.Class.newInstance(Class.java:408)
    at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:118)
    at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:225)
    at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86)
    at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
    at exchanges.barbados.Bitt.getTicker(Bitt.java:72)
    at exchanges.barbados.Bitt.get24hrVol(Bitt.java:59)
    at exchanges.barbados.Bitt.<init>(Bitt.java:51)
    at main.Main.main(Main.java:363)
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.internal.util.collection.UnsafeValue
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 12 more
Java Result: 1

我不知道 org/glassfish/jersey/internal/util/collection/UnsafeValue 是什么,我在网上找到的所有信息都是关于将一​​项网络服务上线,而不是访问它。

我添加的罐子:

javax.ws.rs-api-2.0.1.jar

jersey-client-2.17.jar

【问题讨论】:

标签: java json web-services client


【解决方案1】:

您需要 jersey-common-2.17.jar。你可以从这里得到它:http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.glassfish.jersey.core%22

当您在第三方类上遇到 NoClassDefFoundError 或 ClassNotFoundException 时,您可以 Google 类名并找出它应该在哪个 jar 文件中。

【讨论】:

  • 非常感谢,这个网站帮我找到了 2 个丢失的罐子,但是,还有一个丢失了。我现在有:hk2-api-2.3.0.jar javax.ws.rs-api-2.0.1.jar jersey-client-2.17.jar jersey-common-2.17.jar jersey-guava-2.17.jar。现在它缺少“ClassNotFoundException:com.sun.ws.rs.ext.RuntimeDelegateImpl”。我在网上搜索,它说它应该在 jersey-client-2.17.jar 上(stackoverflow.com/questions/9666584/… 它不是......任何想法?
  • 那个链接是关于 Jersey 1.12 的。看起来 c.s.w.r.e.RuntimeDelegateImpl 在 2.0 之前是 jersey-client 的一部分,然后他们取消了它。从你在那里列出的罐子来看,我无法想象还有什么可能指的是它。这些都是你的类路径中的罐子吗?你的堆栈跟踪是什么样的?
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2014-03-23
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多