Android プロジェクトに ThreeTen-Backport ライブラリを使用しています (Android 開発では java.time がまだ実装されていないため)。
私が書い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.time ライブラリを使用する別の Java プロジェクトでもうまく機能します。
考えられる解決策を探しましたが、役立つものは見つかりませんでした。ある解決策では、タイム ゾーン ルールを含む別の jar を使用する必要があることが示唆され、別の解決策では、クラスパス内に 2 つ以上の 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()