DateTimeFormatter在Android 8以下版本无法使用。

3
我想从另一个时间字符串中减去30分钟,但是在较低版本(如Lollipop、Marshmallow、Naught的0.5、0.6、0.7版本)上出现以下错误:
错误如下:

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/format/DateTimeFormatter;


2
请发布您的代码块,以及您已经尝试过的内容。 - Naitik Soni
可能是Android N Java8 java.time的重复问题。 - Ole V.V.
java.time是从API级别26(Oreo)开始内置的。对于较低级别,有一个后移版本ThreeTenABP。请考虑使用它。更多信息请参考Stack Overflow上的这个问题:如何在Android项目中使用ThreeTenABP - Ole V.V.
1个回答

7

我通过在模块级别的build.gradle文件中添加以下代码解决了这个问题。

这是因为Java.time在api level 26中被添加,所以在26以下版本的应用程序中会抛出错误。

只需添加以下代码即可:

android {

    defaultConfig {
        // Required when setting minSdkVersion to 20 or lower
        multiDexEnabled true
    }

    compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
        // Sets Java compatibility to Java 8
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
}

请确保在发布和调试模式下都将 multiDexEnabled 设置为 true


非常感谢详细的说明。这对许多人来说将会很有帮助。 - Ole V.V.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接