RxJavaPlugins错误没有find类“com.google.devtools.build.android.desugar.runtime.ThrowableExtension”

升级Android Studio 3.0 Beta 1后得到以下错误。 当我降级错误消失。

Studio Build:Android Studio 3.0 Beta 1 Gradle插件版本:'com.android.tools.build:gradle:3.0.0-beta1'Gradle版本:.0.0-beta1 Java版本:8 OS: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) 

Solutions Collecting From Web of "RxJavaPlugins错误没有find类“com.google.devtools.build.android.desugar.runtime.ThrowableExtension”"

更新 (仍然在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中,但可​​以通过更新顶级build.gradle在当前的AS 3.0 Beta 3中使用:

 classpath 'com.android.tools.build:gradle:3.0.0-beta4' 

更新 (AS 3.0 Beta 3中的回归)

问题已经回到了testing阶段3.谷歌已经意识到这个问题,并已重新开放。 请参阅https://issuetracker.google.com/issues/64527520

在未来的beta 4中修复,待发布。

感谢@yvolk报告和@ ghui-zhang的确认。


最终更新 (在AS 3.0 Beta 2中修复)

正如乔丹·邦多(Jordan Bondo)在评论中所言,AS 3.0 Beta 2已经发布,其中包含解决了这个问题的插件3.0.0-beta2。

因此,解决scheme是将插件从3.0.0-beta1升级到至less3.0.0-beta2。


历史

谷歌正在处理这个问题,优先P0(这是最重要的)在这个问题上: https : //issuetracker.google.com/issues/64527520

与此同时,@ edgars解决方法为我做了。 谢谢!

更新2修复 ,计划在下一个testing版“修复将登陆插件3.0.0-beta2”

更新 :Google员工分享的其他解决方法 :

临时解决方法是将min sdk版本设置为19以下。问题是Desugar将为API 19+处理try-with-resources,虽然平台支持它,但是我们不会打包这些类。

更新3 :如果不使用Java代码中的Java 8function,请将其禁用(这对Kotlin代码库也有用)。 看到这个评论 。

升级到AS 3.0 Beta 1后,我也遇到了同样的错误,并find了一个解决方法:我从Google的源文件中复制了ThrowableExtension.java文件,并将其放在app\src\main\java\com\google\devtools\build\android\desugar\runtime (你必须创build这些文件夹)。