android - 在 Android 上使用 java.time 时出现 NoClassDefFoundError

标签 android java-8 java-time

我的 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 中所述。 (见右上角)。

Anything else I am missing?

您可以考虑使用a backport Java 8 日期/时间 API 的一部分。

关于android - 在 Android 上使用 java.time 时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904936/

相关文章:

java - Java 8 mapToInt ( mapToInt(e -> e) ) 如何准确地提高性能?

java - 使用 Java 8 在列表中仅查找重复的字符串属性

java-8 - 使用 STRICT 解析器样式时出现 DateTimeParseException 问题

java - 多线程之间的对象共享

java - 绘制圆圈而不删除先前的圆圈

android - 如何从 NOX 应用程序播放器安卓模拟器访问本地主机?

android - 错误 libGL.so : cannot open shared object file using Android emulator

java - 如何使用 ZonedDateTime 将 UTC 时间转换为 LocalDateTime

java - 为什么 Java 支持秒精度的时区偏移?

android - SVN错误: Failed to add directory 'bin/classes/com'