我正在为我的 Android 项目使用 ThreeTen-Backport 库(因为 java.time 尚未在 Android 开发中实现)。
当我写作时LocalDate today=LocalDate.now();
or 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 库。
我搜索了一个可能的解决方案,但找不到任何有用的东西:一个解决方案建议我需要使用另一个包含时区规则的 jar,其他解决方案建议类路径内可能有两个或更多 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'
我不知道这行代码有什么问题以及如何修复它。
The LocalDate.now()
and LocalTime.now()
方法应该在不指定时区的情况下工作。
对于 Android 项目,你应该使用
implementation 'com.jakewharton.threetenabp:threetenabp:1.0.3'
确保你打电话AndroidThreeTen.init(this);
在使用库中的类之前。这将读取时区数据(包含在库中)。您可以在您的库中初始化该库Application
类在onCreate
方法就像中推荐的那样README https://github.com/JakeWharton/ThreeTenABP.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)