Ошибка RxJavaPlugins Не нашел класс "com.google.devtools.build.android.desugar.runtime.ThrowableExtension"
После обновления бета-версии Android Studio 3.0 Beta 1 появляется следующая ошибка.
Когда я понизился, ошибка исчезла.
Студия: Android Studio 3.0 Beta 1
Версия Gradle Плагин: 'com.android.tools.build:gradle:3.0.0-beta1'
Версия Gradle:. 0.0-beta1
Версия Java: 8
ОС: MacOSX
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension;
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:364)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:113)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.ClassNotFoundException:
Didn't find class "com.google.devtools.build.android.desugar.runtime.ThrowableExtension" on path: DexPathList[[zip file "/data/app/sark.savvy.Debug-1/base.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_dependencies_apk.apk", zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_0_apk.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_1_apk.apk", zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_2_apk.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_3_apk.apk", zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_4_apk.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_5_apk.apk", zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_6_apk.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_7_apk.apk", zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_8_apk.apk",
zip file "/data/app/sark.savvy.Debug-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/sark.savvy.Debug-1/lib/arm64, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:364)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:113)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
Ответы
Ответ 1
Обновить (все еще работает в Gradle плагине 3.0.0-beta5, подтвержденном @TmTron)
classpath 'com.android.tools.build:gradle:3.0.0-beta5'
Обновить (исправить в Gradle плагин 3.0.0-beta4)
Проблема снова исправлена в Gradle плагине 3.0.0-beta4. Ожидается, что он будет включен в следующую версию AS 3.0 Beta 4, но может быть уже использован в текущей версии AS 3.0 Beta 3 путем обновления верхнего уровня build.gradle:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
Обновить (регрессия в AS 3.0 Beta 3)
Проблема вернулась к бета-версии 3. Google уже знает об этой проблеме и снова ее открыл. См. https://issuetracker.google.com/issues/64527520
Исправлено в будущей бета-версии 4, ожидающее выхода.
Спасибо @yvolk за сообщение об этом и @ghui-zhang для подтверждения.
Окончательное обновление (исправить в AS 3.0 Beta 2)
Как отмечает Джордан Бондо в своем комментарии, AS 3.0 Beta 2 уже выпущен, содержащий плагин 3.0.0-beta2, который исправляет проблему.
Итак, решение состоит в том, чтобы обновить плагин от 3.0.0-beta1 до, по крайней мере, 3.0.0-бета2.
История
Google обрабатывает эту проблему с приоритетом P0 (это приоритет приоритета) в этой проблеме: https://issuetracker.google.com/issues/64527520
Тем временем обходной путь @edgars сделал это для меня. Спасибо!
Обновление 2: Исправлено, запланированное для следующей бета-версии "Fix войдет в плагин 3.0. 0-бета2"
Обновить: дополнительное обходное решение, совместно используемое Googler:
Временное обходное решение - установить версию min sdk ниже 19. Проблема заключается в том, что Desugar будет обрабатывать try-with-resources для API 19+, хотя платформа поддерживает его, но мы не будем упаковывать эти классы.
Обновить 3: если не использовать функции Java 8 в коде Java, отключите его (это также может быть полезно для кодовых баз Котлина). См. этот комментарий.
Ответ 2
Я также столкнулся с такой же ошибкой после обновления до версии AS 3.0 Beta 1 и нашел обходной путь: я сделал копию файла ThrowableExtension.java
из Источники Google и поместите его в app\src\main\java\com\google\devtools\build\android\desugar\runtime
(вам нужно создать эти папки).