try-with-resources IncompatibleClassChangeError: интерфейс не реализован в API 16 - PullRequest
0 голосов
/ 02 апреля 2019

Согласно руководству по Android https://developer.android.com/studio/write/java8-support#supported_features, try-with-resources совместим со всеми уровнями API при использовании java 8.

В настоящее время я получаю исключение в этом коде:

try (final AssetFileDescriptor afd = context.getResources().openRawResourceFd(resId)) {
    if (sample.load(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength())) {
        if (!sample.isClosedSet()) sample.play(leftVolume, rightVolume, rate);
    }
} catch (Exception e) {
    e.printStackTrace();
}

Исключением является:

java.lang.IncompatibleClassChangeError: interface not implemented
        at com.olekdia.supportsoundpool.SoundPoolCompat.$closeResource(SoundPoolCompat.java:260)
....

Это происходит на Andriod 4.2 (API 16), но оно работает, как и ожидалось, на более свежих Android.

Я такжеУ меня есть следующие строки:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

Что с этим не так?

...