在 Android 上使用 java.time 时出现 NoClassDefFoundError
NoClassDefFoundError when using java.time on Android
我的 Android 应用程序使用的 JAR 依赖于 java.time
中的一些 类,例如 LocalTime
,因此至少需要 Java 8.
网络上的多个来源指出 Android 和工具链的更高版本支持 Java 8.
我使用 gradle 构建我的应用程序,但不使用(或希望使用)Android Studio。我使用插件的 3.1.4 版(最新版本与 Gradle 4.4 兼容,该版本与 Ubuntu 的最新 LTS 一起发布,撰写本文时为 18.04)。最低 SDK 为 14,目标为 26。构建工具版本为 27.0.3。
该应用程序构建和安装正常,但当它尝试使用 类 之一时,它崩溃并出现异常:
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalTime;
问题:
java.time
是否在支持 Java 8 的 Android 版本上可用?
- 如果是,最低 API 版本是多少? (我在Anbox上测试过,支持API 25。)
- 还有什么我想念的吗?
Is java.time available on Android versions with Java 8 support?
是的。
If so, what is the minimum API version?
LocalDateTime
可用于 API 26 级及更高级别,如 the JavaDocs 中所述(参见 upper-right 角)。
Anything else I am missing?
您可以考虑使用 Java 8 date/time API 中的 a backport。
我的 Android 应用程序使用的 JAR 依赖于 java.time
中的一些 类,例如 LocalTime
,因此至少需要 Java 8.
网络上的多个来源指出 Android 和工具链的更高版本支持 Java 8.
我使用 gradle 构建我的应用程序,但不使用(或希望使用)Android Studio。我使用插件的 3.1.4 版(最新版本与 Gradle 4.4 兼容,该版本与 Ubuntu 的最新 LTS 一起发布,撰写本文时为 18.04)。最低 SDK 为 14,目标为 26。构建工具版本为 27.0.3。
该应用程序构建和安装正常,但当它尝试使用 类 之一时,它崩溃并出现异常:
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalTime;
问题:
java.time
是否在支持 Java 8 的 Android 版本上可用?- 如果是,最低 API 版本是多少? (我在Anbox上测试过,支持API 25。)
- 还有什么我想念的吗?
Is java.time available on Android versions with Java 8 support?
是的。
If so, what is the minimum API version?
LocalDateTime
可用于 API 26 级及更高级别,如 the JavaDocs 中所述(参见 upper-right 角)。
Anything else I am missing?
您可以考虑使用 Java 8 date/time API 中的 a backport。