Jackson no puede cargar types JDK7 en Android

Uso Jackson 2.8.2 en mi aplicación Android para deserializar JSON. La deserialization en sí funciona, sin embargo, puedo ver la siguiente advertencia en el logging de la aplicación:

Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added 

Proguard está deshabilitado, sourceCompatibility está establecido en '1.7' . ¿Cómo puedo agregar estos types aparentemente faltantes a mi compilation?

En primer lugar, su configuration de sourceCompatibility de sourceCompatibility de 1.7 no significa nada sobre el entorno de time de ejecución, por lo que no tiene ningún impacto en este post.

Esto es puramente un " ¿existen estas classs en el momento en que Jackson inicia esta class " tema? Y no existen en alguna combinación. Y tal vez eso está bien, si no utiliza la class Java 7 java.nio.file.Path , entonces no debería tener ningún problema con este post de advertencia registrado. Porque de eso se trata esta advertencia, Jackson apoya la serialization / deserialization de esta class específica.

En cuanto a los java.nio.* Android java.nio.* , No tiene packages java.nio.file.* En ningún nivel de API. Entonces eso explica por qué ves el post de advertencia. Y dado que no se puede usar java.nio.file.Path todos modos, esto ni siquiera es un problema real que no sea un post de logging molesto.

Si este post es molesto, siempre puede configurar el nivel de logging de Java Util para que logger com.fasterxml.jackson.databind.ext.Java7Support sea ERROR nivel. Entonces ya no verá estos posts de advertencia .

Más sobre el post registrado:

En Jackson 2.8.x, este soporte para Java 7 class java.nio.file.Path está cargando desde el mismo file JAR y está incorporado. Una class verifica dinámicamente si otra puede cargar sin error:

 Class<?> cls = Class.forName("com.fasterxml.jackson.databind.ext.Java7SupportImpl"); 

La única forma en que esto puede fallar es si algo está eliminando esta class del set final de classs. O una de estas classs de la que depende falta en el time de ejecución:

 import java.beans.ConstructorProperties; import java.beans.Transient; import java.nio.file.Path; 

Si falta alguno de ellos, verá el post de error registrado. Entonces uno de estos es verdadero:

  • una o más de las 7 classs de JDK faltan en time de ejecución
  • com.fasterxml.jackson.databind.ext.Java7SupportImpl falta en time de ejecución

Ninguna de esas causas es culpa de Jackson, son algo relacionado con el entorno de time de ejecución (es decir, no existen en las API de Android) o con las classs de eliminación de Proguard que no cree que se utilicen.

Ver también:

  • Android import java.nio.file.Files; no se puede resolver
  • ¿Cómo usar el package java.nio.file en android?
  • Paquetes de Android java.nio
  • Kotlin networkinguce la function para que la list 2d no funcione
  • Kotlin webview crash
  • Cómo llamar al número de teléfono en Kotlin Android
  • Kotlin Elimina todos los caracteres no alfanuméricos
  • Cómo replace :: nuevo en kotlin?
  • Extender class de datos en Kotlin
  • Android Studio 3.0 no puede sugerir import para shl y shr en Kotlin
  • Uso de Kotlin Coroutines en Android
  • Kotlin lazy slice array
  • Restricción de generics Kotlin
  • Reemplazar código duplicado con parámetro de function