Я использую библиотеку ThreeTen-Backport для моего Android-проекта (потому что java.time еще не реализован в разработке Android).
Когда я пишу LocalDate today=LocalDate.now();
или LocalTime time=LocalTime.now();
, я получаю следующее исключение:
Caused by: org.threeten.bp.zone.ZoneRulesException:
No time-zone data files registered
at org.threeten.bp.zone.ZoneRulesProvider.getProvider(ZoneRulesProvider.java:176)
at org.threeten.bp.zone.ZoneRulesProvider.getRules(ZoneRulesProvider.java:133)
at org.threeten.bp.ZoneRegion.ofId(ZoneRegion.java:143)
at org.threeten.bp.ZoneId.of(ZoneId.java:357)
at org.threeten.bp.ZoneId.of(ZoneId.java:285)
at org.threeten.bp.ZoneId.systemDefault(ZoneId.java:244)
at org.threeten.bp.Clock.systemDefaultZone(Clock.java:137)
at org.threeten.bp.LocalDate.now(LocalDate.java:165)
Такая же строка кода хорошо работает в другом проекте java, который использует собственную библиотеку java.time.
Я искал возможное решение, но не нашел ничего полезного: одно решение предложило мне использовать другую банку, которая включает в себя правила часовых поясов, и другие предположили, что внутри пути к классам могут быть две или более библиотеки ThreeTenBP.
Эти случаи не соответствуют моему делу.
Внутри файла build.gradle
в разделе зависимостей я пробовал несколько конфигураций:
- Сначала я использовал -
compile 'com.jakewharton.threetenabp:threetenabp:1.0.3'
- Затем я попробовал -
compile 'org.threeten:threetenbp:1.0.3'
- После этого я попробовал -
compile 'org.threeten:threetenbp:1.3.1'
- В настоящее время я использую
compile 'org.threeten:threetenbp:1.3.2'
Я не знаю, что не так с этой строкой кода и как ее исправить.
Методы LocalDate.now()
и LocalTime.now()
должны работать без указания часового пояса.