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
  • Código Kotlin comstackdo a Jar para ser utilizado para el Proyecto Java?
  • Devolución de llamada al constructor con múltiples parameters
  • ¿Cuál es la forma correcta de agregar un getter privado abstracto y un setter público?
  • Kotlin: creación de una list mutable con elementos repetitivos
  • kapt: cómo get comentarios fuente?
  • Kotlin: cómo validar la class de datos
  • Kotlin - Persistir MutableList en ShanetworkingPreferences
  • Android carga varios documentos Firerestre
  • Conversión de código de Java a Kotlin en Android Studio
  • ¿Es * arrayOf () una statement?
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?