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