NoClassDefFoundError со ссылкой на метод Java 8 - PullRequest
0 голосов
/ 17 февраля 2019

Я запускаю тестирование Android на эмуляторе Travis CI .В следующем тестовом примере вызывается вспомогательный метод для ссылки на метод :

@Test
public void testGetLowEmissionZones_worksAtAll() {

    // ...

    lowEmissionZone.childZones.forEach(this::testChildZone);

    // ...

}

private void testChildZone(@NonNull ChildZone childZone) {
    // ...
}

Когда Travis CI выполняет , этот тест не выполняется с NoClassDefFoundError:

ContentProviderTest > testGetLowEmissionZones_worksAtAll[test(AVD) - 4.3.1] FAILED 
    java.lang.NoClassDefFoundError: -$$Lambda$ContentProviderTest$He_xH9TsDaN0tZU8EqFP1CuQyAM
    at ContentProviderTest.testLowEmissionZone(ContentProviderTest.java:151)

Если я изменяю вызов метода, возникает ошибка no :

@Test
public void testGetLowEmissionZones_worksAtAll() {

    // ...

    for (ChildZone childZone : lowEmissionZone.childZones) {
            testChildZone(childZone);
    }

    // ...

}

Я пробовал оба openjdk8 и oraclejdk8 , оба сбоя.

Как я могу продолжать использовать ссылки на методы?

1 Ответ

0 голосов
/ 01 марта 2019

Возможно, вы столкнулись с этой проблемой, потому что forEach(Consumer<?> consumer) недоступно в Jelly Bean.

Как видите, тест не выполняется 4.3.1.Убедитесь, что это связано с уровнями API AVD.Убедитесь, что код работает правильно на уровне API 24 года.

...