java.lang.NoClassDefFoundError: Не удалось разрешить: Ljava / time / LocalDate;ошибка - PullRequest
0 голосов
/ 26 сентября 2018

Я перепробовал все, но ошибка не решается

Вот мой код:

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 "".Этот тоже не работает.Пожалуйста, помогите мне ...

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Выдается, если виртуальная машина Java или экземпляр ClassLoader пытается загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения), и определение класса не можетбыть найденным.Поисковое определение класса существовало, когда выполняемый в данный момент класс был скомпилирован, но определение больше не может быть найдено.

0 голосов
/ 26 сентября 2018

Вы пытаетесь запустить свое приложение на устройстве (или симуляторе) с уровнем API ниже 26. LocalDate, а остальная часть java.time была представлена ​​на уровне 26. Однако, есть обратный порт, который позволяет вамиспользуйте наиболее часто используемые 80% на более ранних версиях Android.Я полагаю, что это хорошее решение для вас.

Поэтому добавьте библиотеку ThreeTenABP в свой проект.И убедитесь, что вы импортируете org.threeten.bp.LocalDate и org.threeten.bp.DayOfWeek, а не версии из java.time.Тогда с тобой все будет в порядке.

Однажды мне сказали, что зависимости есть (я не тестировал):

compile group: 'org.threeten', name: 'threetenbp', version: '1.3.3', classifier: 'no-tzdb'

TemporalAdjusters

Как бы то ни было, твой код может бытьзаписано как:

    LocalDate today = LocalDate.now(ZoneId.of("America/Tortola"));
    LocalDate monday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
    LocalDate tue = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.TUESDAY));
    LocalDate wed = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.WEDNESDAY));
    LocalDate thur = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.THURSDAY));
    LocalDate fri = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY));
    LocalDate sat = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY));
    LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));

Я использовал следующие операции импорта:

import org.threeten.bp.DayOfWeek;
import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.temporal.TemporalAdjusters;

Ссылки

0 голосов
/ 26 сентября 2018

NoClassDefFoundError -брошенный, если виртуальная машина Java или экземпляр ClassLoader пытаются загрузить определение класса (как часть обычного вызова метода иликак часть создания нового экземпляра с использованием нового выражения) и определение класса не найдено.

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.

...