NoClassDefFoundError при использовании java.time на Android - PullRequest
1 голос
/ 05 июля 2019

Мое приложение Android использует JAR, который использует несколько классов из java.time, например LocalTime, и, следовательно, требует как минимум Java 8.

Несколько источников в сети указывают, что более поздние версии Android и цепочка инструментов поддерживают Java 8.

Я создаю свое приложение с Gradle, но не использую (или не хочу использовать) Android Studio. Я использую плагин версии 3.1.4 (последняя версия, совместимая с Gradle 4.4, версия, которая поставляется с последней версией LTS Ubuntu, 18.04 на момент написания статьи). Минимальный SDK - 14, цель - 26. Версия инструментов сборки - 27.0.3.

Приложение прекрасно собирается и устанавливается, но когда оно пытается использовать один из классов, оно вылетает с исключением:

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalTime;

Вопросы:

  • Доступно ли java.time в версиях Android с поддержкой Java 8?
  • Если так, какая минимальная версия API? (Я тестировал на Anbox, который поддерживает API 25.)
  • Что-то еще мне не хватает?

1 Ответ

4 голосов
/ 05 июля 2019

Доступно ли java.time в версиях Android с поддержкой Java 8?

Да.

Если да, то какая минимальная версия API?

LocalDateTime доступно на уровне API 26 и выше, как отмечено в JavaDocs (см. Верхний правый угол).

Все, что угодноиначе мне не хватает?

Вы можете рассмотреть возможность использования бэкпорта API даты / времени Java 8.

...