Android Studio中无法访问java.time包的问题求助
嘿,我刚好碰到过类似的情况,结合你的环境配置,给你几个可行的方案试试:
解决Android Studio中使用java.time包的问题
方案1:开启Desugar支持
虽然你的最低SDK是API 24(Android 7.0本身已经部分支持java.time),但Gradle插件3.x版本可能需要显式开启Desugar来让java.time的API在构建时被正确处理。在你的模块级build.gradle文件中添加以下配置:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // 开启Desugar支持 coreLibraryDesugaringEnabled true } dependencies { // 添加Desugar核心库依赖 coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' } }
版本号可以根据你的Gradle插件版本微调,1.1.5是适配3.x插件的稳定版本。添加完成后同步Gradle,应该就能正常调用java.time下的类了。
方案2:使用ThreeTenABP兼容库
如果Desugar方案没生效,或者你想更稳妥地兼容后续可能的版本调整,可以用ThreeTenABP——这是专门为Android打造的java.time兼容库,完全遵循JSR-310标准。
- 在模块级
build.gradle的dependencies中添加依赖:
implementation 'com.jakewharton.threetenabp:threetenabp:1.3.1'
- 在你的Application类中完成初始化:
@Override public void onCreate() { super.onCreate(); AndroidThreeTen.init(this); }
之后你就可以像使用原生java.time一样,调用org.threeten.bp包下的LocalDateTime、ZonedDateTime等类,用法和原生完全一致。
方案3:检查配置一致性并清理缓存
有时候缓存或配置错位也会导致问题,你可以做以下检查:
- 确认项目JDK路径:打开
File > Project Structure > SDK Location,检查JDK location是否指向正确的嵌入式JDK 8路径。 - 确认兼容性配置位置:
sourceCompatibility和targetCompatibility必须配置在模块级build.gradle的compileOptions下,而非项目级配置。 - 清理重建项目:执行
Build > Clean Project,再执行Build > Rebuild Project,清除可能存在的构建缓存。
建议先从方案1开始尝试,因为它最接近原生支持的体验。如果还是不行,方案2的兼容库几乎能覆盖所有场景。
内容的提问来源于stack exchange,提问作者157 239n
相关产品推荐
相关产品推荐

