You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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标准。

  1. 在模块级build.gradle的dependencies中添加依赖:
implementation 'com.jakewharton.threetenabp:threetenabp:1.3.1'
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:24:35