我将 Scala 2.11.0 与 sbt 和 android-sdk-plugin 以及 Jackson 一起用作 Json Marshaller。当应用程序尝试从 Json 反序列化为我的 Scala 案例类时,设备上发生以下异常:
W/dalvikvm﹕ WARNING: could not find annotation member bytes in Lscala/reflect/ScalaSignature;
E/dalvikvm﹕ Failed creating annotation element (m=0x41a575c0 n=0x41a575e0 a=0x0 r=0x0)
W/System.err﹕ java.lang.RuntimeException: failure in processEncodedAnnotation
W/System.err﹕ java.lang.RuntimeException: failure in processEncodedAnnotation
W/System.err﹕ at java.lang.Class.getDeclaredAnnotations(Native Method)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.AnnotatedClass.resolveClassAnnotations(AnnotatedClass.java:308)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.AnnotatedClass.getAnnotation(AnnotatedClass.java:173)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.findAutoDetectVisibility(JacksonAnnotationIntrospector.java:140)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.<init>(POJOPropertiesCollector.java:111)
W/System.err﹕ at com.fasterxml.jackson.module.scala.introspect.ScalaPropertiesCollector.<init>(ScalaPropertiesCollector.scala:15)
W/System.err﹕ at com.fasterxml.jackson.module.scala.introspect.ScalaClassIntrospector$.constructPropertyCollector(ScalaClassIntrospector.scala:24)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.collectProperties(BasicClassIntrospector.java:142)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:81)
W/System.err﹕ at com.fasterxml.jackson.databind.introspect.BasicClassIntrospector.forDeserialization(BasicClassIntrospector.java:11)
W/System.err﹕ at com.fasterxml.jackson.databind.DeserializationConfig.introspect(DeserializationConfig.java:547)
W/System.err﹕ at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:325)
W/System.err﹕ at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:263)
W/System.err﹕ at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:243)
W/System.err﹕ at com.fasterxml.jackson.databind.deser.DeserializerCache.hasValueDeserializerFor(DeserializerCache.java:193)
W/System.err﹕ at com.fasterxml.jackson.databind.DeserializationContext.hasValueDeserializerFor(DeserializationContext.java:345)
W/System.err﹕ at com.fasterxml.jackson.databind.ObjectMapper.canDeserialize(ObjectMapper.java:2072)
W/System.err﹕ at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.canRead(MappingJackson2HttpMessageConverter.java:103)
W/System.err﹕ at org.springframework.web.client.RestTemplate$AcceptHeaderRequestCallback.doWithRequest(RestTemplate.java:542)
W/System.err﹕ at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:593)
W/System.err﹕ at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:474)
W/System.err﹕ at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
W/System.err﹕ at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:415)
W/System.err﹕ at net.gutefrage.android.rest.ScalaRestTemplate$$anonfun$exchange$1.apply(ScalaRestTemplate.scala:22)
W/System.err﹕ at net.gutefrage.android.rest.ScalaRestTemplate$$anonfun$exchange$1.apply(ScalaRestTemplate.scala:22)
W/System.err﹕ at scala.util.Try$.apply(Try.scala:161)
W/System.err﹕ at net.gutefrage.android.rest.ScalaRestTemplate$$anonfun$genericRestCallForEntity$1.apply(ScalaRestTemplate.scala:31)
W/System.err﹕ at net.gutefrage.android.rest.ScalaRestTemplate$$anonfun$genericRestCallForEntity$1.apply(ScalaRestTemplate.scala:31)
W/System.err﹕ at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
W/System.err﹕ at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
最佳答案
我正在运行与您类似的设置,但遇到了同样的问题。在运行 sbt android:run
之前运行 sbt clean
似乎可以解决问题。看起来这是某种编译器问题。
关于android - "failure in processEncodedAnnotation"在 Android 上使用 Jackson 和 ScalaModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23547431/