RxWear icon indicating copy to clipboard operation
RxWear copied to clipboard

NoSuchMethodError with Java8

Open joen93 opened this issue 9 years ago • 2 comments

Android plugin 2.4.0 supports Java 8 language features, which makes it possible to stop using retrolambda. However, when I removed my retrolamda dependancy, my app crashed when trying to use the RxWear 2.0.0 library.

Any idea what might cause this :confused: ?

Stacktrace of the crash:

04-11 15:08:04.061 4853-4853/com.company.myapp.debug E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.company.myapp.debug, PID: 4853
                                                                            java.lang.NoSuchMethodError: No virtual method lambda$subscribe$0(Lcom/google/android/gms/common/api/GoogleApiClient;)V in class Lcom/patloew/rxwear/BaseSingle; or its super classes (declaration of 'com.patloew.rxwear.BaseSingle' appears in /data/app/com.company.myapp.debug-1/split_lib_dependencies_apk.apk)
                                                                                at com.patloew.rxwear.BaseSingle$$Lambda$1.cancel(Unknown Source)
                                                                                at io.reactivex.internal.disposables.CancellableDisposable.dispose(CancellableDisposable.java:49)
                                                                                at io.reactivex.internal.operators.single.SingleCreate$Emitter.onError(SingleCreate.java:91)
                                                                                at com.patloew.rxwear.BaseSingle$ApiClientConnectionCallbacks.onConnectionFailed(BaseSingle.java:90)
                                                                                at com.google.android.gms.common.internal.zzm.zzn(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaat.zzc(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaar.zzf(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaar.zzwf(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaar.zza(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaav.zza(Unknown Source)
                                                                                at com.google.android.gms.internal.zzaag.onConnectionFailed(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzl$2.onConnectionFailed(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzf$zzj.zzm(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzf$zza.zzb(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzf$zza.zzu(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzf$zze.zzxH(Unknown Source)
                                                                                at com.google.android.gms.common.internal.zzf$zzd.handleMessage(Unknown Source)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:154)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

joen93 avatar Apr 11 '17 13:04 joen93

According to this, the Android gradle plugin as of 2.4 will support Java 8 libraries. I will therefore remove Retrolambda completely when this is released.

patloew avatar Apr 15 '17 09:04 patloew

In the meantime, if you want to use RxWear 2.x with native desugar right now, I've made the effort to downgrade its source to Java 6 (and I still feel sick about it). Just as a temporary solution until Patrick's official update:

allprojects {
    repositories {
        // TODO Used for temporary RxWear Desugar support: https://github.com/patloew/RxWear/issues/6
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    // TODO Used for temporary RxWear Desugar support: https://github.com/patloew/RxWear/issues/6
    compile 'com.github.aurae:RxWear:2.x-java6-SNAPSHOT'
    // compile 'com.patloew.rxwear:rxwear2:2.0.0'
}

mannodermaus avatar Jun 13 '17 10:06 mannodermaus