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

时间:2019-07-05 14:24:36

标签: 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 18.04的最新LTS一起提供)。最低SDK为14,目标为26。构建工具版本为27.0.3。

该应用程序可以正常构建和安装,但是当尝试使用其中一个类时,它会崩溃并出现以下异常:

  

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalTime;

问题:

  • java.time在支持Java 8的Android版本上可用吗?
  • 如果是,最低API版本是什么? (我在支持API 25的Anbox上进行了测试。)
  • 我想念的还有什么吗?

1 个答案:

答案 0 :(得分:4)

  

在支持Java 8的Android版本上可以使用java.time吗?

是的

  

如果是,最低API版本是什么?

the JavaDocs中所述,

LocalDateTime在API级别26和更高版本中可用(请参见右上角)。

  

我还有什么想念的吗?

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