ThreeTen-Backport-Fehler auf Android - ZoneRulesException: Nein time-zone-data-Dateien registriert
Ich bin mit ThreeTen-Backport-Bibliothek für mein Android-Projekt (da in java.Zeit noch nicht implementiert ist in android-Entwicklung).
Wenn ich Schreibe LocalDate today=LocalDate.now();
oder LocalTime time=LocalTime.now();
bekomme ich die folgende exception:
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)
Der gleichen Zeile der code funktioniert auch in einem anderen java-Projekt habe ich, die verwendet die native java.Zeit-Bibliothek.
Suchte ich nach einer möglichen Lösung konnte Sie aber nicht finden, etwas nützliches: eine Lösung vorgeschlagen, die ich brauche, um ein anderes Glas mit der Zeit-zone, Regeln und andere vorgeschlagen, dass es möglicherweise zwei oder mehr ThreeTenBP-Bibliotheken innerhalb des classpath.
Diese Fälle entsprechen nicht meinem Fall.
Innerhalb der build.gradle
- Datei, in der die Abhängigkeiten Abschnitt, habe ich versucht, einige Einstellungen vornehmen:
- Auf den ersten, den ich verwendet -
compile 'com.jakewharton.threetenabp:threetenabp:1.0.3'
- Dann habe ich versucht -
compile 'org.threeten:threetenbp:1.0.3'
- Danach versuchte ich -
compile 'org.threeten:threetenbp:1.3.1'
- Derzeit nutze ich
compile 'org.threeten:threetenbp:1.3.2'
Ich weiß nicht, was ist falsch mit dieser Codezeile und wie es zu lösen ist.
Die LocalDate.now()
und LocalTime.now()
Methoden funktionieren sollte, ohne Angabe einer Zeitzone.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Android-Projekt, das Sie verwenden sollten,
Stellen Sie sicher, Sie rufen
AndroidThreeTen.init(this);
vor der Verwendung der Klassen aus der Bibliothek. Lesen Sie die Zeitzonen-Daten (in der Bibliothek enthalten). Sie können initialisieren der Bibliothek imApplication
Klasse in deronCreate
Methode, so wie es empfohlen wird in der README.AndroidThreeTen.init(this);
code. Ich dachte, fügen Sie diese in die AktivitätonCreate
Methode, aber ich sah es nicht richtig war. Jetzt habe ich eine neue Klasse, die erweitert die application-Klasse und setzen die Zeile in deronCreate
Methode. Jetzt funktioniert alles, einfach toll!testImplementation
) und Sie sind gut zu gehenAnstelle der Initialisierung der Bibliothek, können Sie versuchen, diese:
LocalDateEx.kt
LocalTimeEx.kt
LocalDateTimeEx.kt
Verwendung: