使用Java访问JSON Web服务

使用Java访问JSON Web服务,java,json,web-services,client,Java,Json,Web Services,Client,我正在尝试访问Web服务(文档:)。我需要从这个JSON中获取一个信息,即响应中的“volume”字段。但我在客户端生成器中遇到了问题。检查我的代码/错误: 代码: 错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/jersey/internal/util/collection/UnsafeValue at java.lang.Class.getDeclaredConstructors

我正在尝试访问Web服务(文档:)。我需要从这个JSON中获取一个信息,即响应中的“volume”字段。但我在客户端生成器中遇到了问题。检查我的代码/错误:

代码:

错误:

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
线程“main”java.lang.NoClassDefFoundError中的异常:org/glassfish/jersey/internal/util/collection/UnsafeValue 位于java.lang.Class.getDeclaredConstructors0(本机方法) 位于java.lang.Class.privateGetDeclaredConstructors(Class.java:2663) 位于java.lang.Class.getConstructor0(Class.java:3067) 位于java.lang.Class.newInstance(Class.java:408) 位于javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:118) 位于javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:225) 位于javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86) 位于javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114) 在exchanges.barbados.Bitt.getTicker(Bitt.java:72) 在exchanges.barbados.Bitt.get24hrVol(Bitt.java:59) 在exchanges.barbados.Bitt.(Bitt.java:51) 在main.main.main(main.java:363) 原因:java.lang.ClassNotFoundException:org.glassfish.jersey.internal.util.collection.UnsafeValue 在java.net.URLClassLoader$1.run(URLClassLoader.java:372) 在java.net.URLClassLoader$1.run(URLClassLoader.java:361) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:360) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 还有12个 Java结果:1 我不知道什么是org/glassfish/jersey/internal/util/collection/UnsafeValue,我在网上找到的所有信息都是关于将一个Web服务放到网上,而不是访问它

我加上的罐子:

javax.ws.rs-api-2.0.1.jar


jersey-client-2.17.jar

您需要jersey-common-2.17.jar。您可以从这里获得:


每当你在第三方类上遇到NoClassDefFoundError或ClassNotFoundException时,你可以用谷歌搜索类名并找出它应该在哪个jar文件中。

可能重复的谢谢,这个网站帮助我找到了两个丢失的jar,但是,还有一个丢失了。我现在有:hk2-api-2.3.0.jarjavax.ws.rs-api-2.0.1.jarjersey-client-2.17.jarjersey-common-2.17.jarjersey-guava-2.17.jar。现在它缺少了“ClassNotFoundException:com.sun.ws.rs.ext.RuntimeDelegateImpl”。我在网上搜索,它说应该在jersey-client-2.17.jar上(没有…任何想法?该链接正在谈论Jersey 1.12。看起来c.s.w.r.e.RuntimeDelegateImpl在2.0之前一直是Jersey客户端的一部分,然后他们就取消了它。从您列出的JAR来看,我无法想象还有什么可能仍然引用它。这些JAR都在您的类路径中吗?堆栈跟踪的是什么看起来像?
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