首页 > 解决方案 > java.lang.NoClassDefFoundError:解析失败:Ljava/time/LocalDate;错误

问题描述

我尝试了一切,但错误没有得到解决

这是我的代码:

public String[] getWeekDays() {

    LocalDate today = LocalDate.now();
    LocalDate monday = today;
    LocalDate tue = today;
    LocalDate wed = today;
    LocalDate thur = today;
    LocalDate fri = today;
    LocalDate sat = today;
    LocalDate sunday = today;
    while (sunday.getDayOfWeek() != DayOfWeek.SUNDAY){
        sunday = sunday.minusDays(1);
     }
     while (monday.getDayOfWeek() != DayOfWeek.MONDAY){
        monday = monday.minusDays(1);
     }
     while (tue.getDayOfWeek() != DayOfWeek.TUESDAY){
        tue = tue.plusDays(1);
     }
     while (wed.getDayOfWeek() != DayOfWeek.WEDNESDAY){
        wed = wed.plusDays(1);
     }
     while (thur.getDayOfWeek() != DayOfWeek.THURSDAY){
        thur = thur.plusDays(1);
     }
     while (fri.getDayOfWeek() != DayOfWeek.FRIDAY){
        fri = fri.plusDays(1);
     }
     while (sat.getDayOfWeek() != DayOfWeek.SATURDAY){
        sat = sat.plusDays(1);
     }

     String[] days = {String.valueOf(sunday),String.valueOf(monday), String.valueOf(tue), String.valueOf(wed),
                String.valueOf(thur), String.valueOf(fri), String.valueOf(sat)};
    return days;
}

我已经编写了代码来获取一周的日期。当我运行此代码时,我在 LocalDate.now(); 处收到错误。错误是“java.lang.NoClassDefFoundError:解析失败:Ljava/time/LocalDate;”。我在网上搜索过。有人说它需要 API 级别最低 27。我已经厌倦了 API 27 级别,但错误没有得到解决。我的目标设备更多是 API 26,我需要在这个 API 级别上运行。并且还尝试添加“compile”java.time:LocalTime:1.8“”。这个也行不通。请帮我...

标签: javaandroidjava-time

解决方案


NoClassDefFoundError- 如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且找不到类的定义,则抛出.

LocalDate today = LocalDate.now(); // Added 1.8

LocalDate

确保,你在你的build.gradle部分添加了这个。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
    }

供参考

java.time包仅在 API 26 中添加。

所以,你应该设置

 minSdkVersion 26

之后,Clean-Rebuild-Gradle.


推荐阅读