Intereting Posts
Как включить аутентификацию носителей в приложении Spring Boot? Неправильное отношение типа Corda WireTransaction – TransactionSignature выведено, но DigitalSignature.WithKey ожидается Kotlin – преобразовать цикл в функциональный стиль Реализация свойств, объявленных в интерфейсах в Котлине Можно ли переместить мои файлы Kotlin в отдельный пакет (тип источника) в Android Studio? Делегация класса в Котлине Возвращение рекурсивной функции из другой функции Котлина Lazy переменная с сбросом Невозможно инициализировать парсер объектов для модели. Продукты, не найдены приемлемые конструкторы Округление Двое-двух десятичных знаков в Котлине. BigDecimal.doubleValue не существует? Параметрированные тесты JUnit5 на уровне класса Повсюду в Котлине Kotlin: какой формат использовать для документации? Kotlin, как тестировать (int) массив Как вызвать суперкласс класса super из внутреннего класса в Котлине?

Джексон не может загружать типы JDK7 на Android

Я использую Jackson 2.8.2 в своем приложении для Android для десериализации JSON. Однако само десериализацию я вижу в журнале приложений следующее предупреждение:

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

Proguard отключен, для параметра sourceCompatibility установлено значение '1.7' . Как я могу добавить эти, казалось бы, недостающие типы в мою сборку?

Solutions Collecting From Web of "Джексон не может загружать типы JDK7 на Android"

Во-первых, ваш sourceCompatibility параметр sourceCompatibility 1.7 не означает ничего о среде выполнения, поэтому он не влияет на это сообщение.

Это просто « эти классы существуют в то время, когда Джексон инициализирует этот класс », и они не существуют в какой-то комбинации. И, возможно, это нормально, если вы не используете класс Java 7 java.nio.file.Path тогда у вас не должно быть проблем с этим зарегистрированным предупреждающим сообщением. Так как это предупреждение, Джексон поддерживает сериализацию / десериализацию этого конкретного класса.

Рассматривая пакеты Android java.nio.* , У него нет пакетов java.nio.file.* На любом уровне API. Таким образом, это объясняет, почему вы видите предупреждение. И поскольку вы не можете использовать java.nio.file.Path любом случае, это даже не настоящая проблема, кроме раздражающего сообщения о регистрации.

Если это сообщение надоедливое, вы всегда можете установить уровень com.fasterxml.jackson.databind.ext.Java7Support Java Util для журнала com.fasterxml.jackson.databind.ext.Java7Support чтобы быть уровнем ERROR . Тогда вы больше не увидите эти предупреждающие сообщения.

Подробнее о зарегистрированном сообщении:

В Jackson 2.8.x эта поддержка Java 7 класса java.nio.file.Path загружается из одного JAR-файла и встроена. Один класс динамически проверяет, может ли другой загружаться без ошибок:

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

Единственный способ, которым это может потерпеть неудачу, – это то, что что-то лишает этот класс из окончательного набора классов. Или один из этих классов, от которого он зависит, отсутствует во время выполнения:

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

Если какой-либо из них отсутствует, вы увидите сообщение об ошибке, зарегистрированное в журнале. Итак, одно из них верно:

  • один или несколько классов JDK 7 отсутствуют во время выполнения
  • com.fasterxml.jackson.databind.ext.Java7SupportImpl отсутствует во время выполнения

Ни одна из этих причин не виновата в Джексоне, это что-то вроде вашей среды выполнения (т. Е. Они не существуют в Android API), или классы отсечения Proguard, которые, по его мнению, не используются.

Смотрите также:

  • Android-импорт java.nio.file.Files; не может быть решен
  • Как использовать пакет java.nio.file в android?
  • Пакеты Android java.nio