Android jersey客户端无法向网络服务

时间:2018-02-06 11:43:07

标签: android rest jersey-2.0 gradle-dependencies

我发布了一个问题here,现在我遇到了一个新问题 我已将IP地址更新为10.0.2.2:8080....,其余部分都相同(Gradle依赖项等)。
请求没有被发送到网络服务,泽西岛会​​发出某种警告 这是堆栈跟踪:

  

W / Errors:检测到以下警告:警告:HK2   服务具体化失败了   [org.glassfish.jersey.message.internal.DataSourceProvider]带有   例外:             MultiException堆栈1 of 4             java.lang.RuntimeException:java.util.concurrent.ExecutionException:   java.lang.NoClassDefFoundError:javax.activation.DataSource                 在org.glassfish.hk2.utilities.cache.LRUHybridCache.compute(LRUHybridCache.java:315)                 at org.glassfish.hk2.utilities.reflection.internal.ClassReflectionHelperImpl.getAllMethods(ClassReflectionHelperImpl.java:108)                 at org.jvnet.hk2.internal.Utilities.findInitializerMethods(Utilities.java:1341)                 在org.jvnet.hk2.internal.DefaultClassAnalyzer.getInitializerMethods(DefaultClassAnalyzer.java:107)                 在org.glassfish.jersey.internal.inject.JerseyClassAnalyzer.getInitializerMethods(JerseyClassAnalyzer.java:242)                 at org.jvnet.hk2.internal.Utilities.getInitMethods(Utilities.java:218)                 在org.jvnet.hk2.internal.ClazzCreator.initialize(ClazzCreator.java:145)                 在org.jvnet.hk2.internal.ClazzCreator.initialize(ClazzCreator.java:180)                 在org.jvnet.hk2.internal.SystemDescriptor.internalReify(SystemDescriptor.java:740)                 at org.jvnet.hk2.internal.SystemDescriptor.reify(SystemDescriptor.java:694)                 at org.jvnet.hk2.internal.ServiceLocatorImpl.reifyDescriptor(ServiceLocatorImpl.java:461)                 在org.jvnet.hk2.internal.ServiceLocatorImpl.narrow(ServiceLocatorImpl.java:2288)                 在org.jvnet.hk2.internal.ServiceLocatorImpl.access $ 1200(ServiceLocatorImpl.java:125)                 at org.jvnet.hk2.internal.ServiceLocatorImpl $ 9.compute(ServiceLocatorImpl.java:1373)                 at org.jvnet.hk2.internal.ServiceLocatorImpl $ 9.compute(ServiceLocatorImpl.java:1368)                 在org.glassfish.hk2.utilities.cache.internal.WeakCARCacheImpl.compute(WeakCARCacheImpl.java:116)                 在org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1430)                 at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1355)                 at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1344)                 在org.glassfish.jersey.internal.inject.Providers.getServiceHandles(Providers.java:354)                 在org.glassfish.jersey.internal.inject.Providers.getCustomProviders(Providers.java:201)                 在org.glassfish.jersey.message.internal.MessageBodyFactory。(MessageBodyFactory.java:221)                 at java.lang.reflect.Constructor.newInstance(Native Method)                 在org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1375)                 在org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:272)                 在org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:366)                 在org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)                 在org.jvnet.hk2.internal.SingletonContext $ 1.compute(SingletonContext.java:83)                 在org.jvnet.hk2.internal.SingletonContext $ 1.compute(SingletonContext.java:71)                 在org.glassfish.hk2.utilities.cache.Cache $ OriginThreadAwareFuture $ 1.call(Cache.java:97)                 在java.util.concurrent.FutureTask.run(FutureTask.java:237)                 在org.glassfish.hk2.utilities.cache.Cache $ OriginThreadAwareFuture.run(Cache.java:154)                 在org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)                 在org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:122)                 at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2022)                 at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:774)                 at org.jvnet.hk2.internal.ServiceLocatorImpl.getUnqualifiedService(ServiceLocatorImpl.java:786)                 at org.jvnet.hk2.internal.IterableProviderImpl.get(IterableProviderImpl.java:111)                 在org.glassfish.jersey.client.RequestProcessingInitializationStage.apply(RequestProcessingInitializationStage.java:97)                 在org.glassfish.jersey.client.RequestProcessingInitializationStage.apply(RequestProcessingInitializationStage.java:67)                 在org.glassfish.jersey.process.internal.Stages $ LinkedStage.apply(Stages.java:308)                 在org.glassfish.jersey.process.internal.Stages.process(Stages.java:171)                 在org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:25

修改
我跟着blog并实施了他们的方式,我的警告消失了,但我的客户仍然没有与服务器通信。另外,这对我的情况有何影响:

I/art: Rejecting re-init on previously-failed class java.lang.Class<org.glassfish.jersey.internal.OsgiRegistry> 

Jersey客户端是否适用于Android?如果是,那么可以提供适当的学习材料吗?

EDIT2
我遵循了this解决方案,从而放弃了JerseyJersey似乎有一些Android漏洞(我只是猜测。我无法确认)。

1 个答案:

答案 0 :(得分:0)

尝试明确添加依赖项:

                <dependencies>
                    <dependency>
                        <groupId>javax.activation</groupId>
                        <artifactId>activation</artifactId>
                        <version>1.1.1</version>
                    </dependency>
                </dependencies>

来源:GitHub issue