我想使用REST Jersey Client来调用Web服务。但是当从Android应用程序中调用时,它会失败;而在没有任何Android代码的简单Java客户端中调用相同的Web服务调用可以工作。这是否意味着在Android上下文中调用Jersey Client无法工作或者需要特定的配置才能进行REST调用?
我的pom.xml文件包含以下内容:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.13</version>
</dependency>
我的示例代码:
Response getResponse = ClientBuilder.newClient()
.target("http://myserver:8081").path("/users/employees")
.request()
.get();
我在安卓模拟器日志中看到了以下错误:
Failed resolving Lorg/glassfish/jersey/internal/OsgiRegistry; interface 2690 'Lorg/osgi/framework/SynchronousBundleListener;'
Link of class 'Lorg/glassfish/jersey/internal/OsgiRegistry;' failed
VFY: unable to find class referenced in signature (Lorg/glassfish/jersey/internal/OsgiRegistry;)
...
Cannot find default implementation of the HK2 ServiceLocatorGenerator
java.lang.ClassNotFoundException: Provider of org.glassfish.jersey.internal.RuntimeDelegateImpl could not be instantiated: java.lang.IllegalStateException: No generator was provided and there is no default generator registered.
相关评论在这里: "Android 使用 Dalvik 虚拟机,而不是原始的 JVM。我认为这就是 Jersey Client API 在 Android 操作系统中无法工作的原因,但我不确定!"