2016-08-02 12 views
1

Ich habe ein Android-Projekt, wo ich rxjava und rxAndroid verwendet. Ich begann plötzlich, dass Absturz zu bekommen "NoClassDefFoundError: rx.subscriptions.CompositeSubscription"NoClassDefFoundError: rxscriptions.CompositeAbonnement

Ich habe versucht, es online zu sehen, aber ich könnte eine Lösung

java.lang.ExceptionInInitializerError 
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:84) 
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:72) 
at rx.schedulers.Schedulers.<init>(Schedulers.java:70) 
at rx.schedulers.Schedulers.getInstance(Schedulers.java:47) 
at rx.schedulers.Schedulers.newThread(Schedulers.java:108) 
at com.myPackage.controllers.modelsControllers.CountriesController.loadCountries(CountriesController.java:121) 
at com.myPackage.views.fragments.ChatFragment.onCreateView(ChatFragment.java:57) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 
at android.app.BackStackRecord.run(BackStackRecord.java:635) 
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397) 
at android.app.Activity.performStart(Activity.java:5017) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
at android.app.ActivityThread.access$600(ActivityThread.java:130) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4745) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: rx.subscriptions.CompositeSubscription 
at rx.internal.schedulers.CachedThreadScheduler$CachedWorkerPool.<init>(CachedThreadScheduler.java:48) 
at rx.internal.schedulers.CachedThreadScheduler.<clinit>(CachedThreadScheduler.java:139) 
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:84)  
at rx.plugins.RxJavaSchedulersHook.createIoScheduler(RxJavaSchedulersHook.java:72)  
at rx.schedulers.Schedulers.<init>(Schedulers.java:70)  
at rx.schedulers.Schedulers.getInstance(Schedulers.java:47)  
at rx.schedulers.Schedulers.newThread(Schedulers.java:108)  
at com.myPackage.controllers.modelsControllers.CountriesController.loadCountries(CountriesController.java:121)  
at com.myPackage.views.fragments.ChatFragment.onCreateView(ChatFragment.java:57)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:829)  
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)  
at android.app.BackStackRecord.run(BackStackRecord.java:635)  
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)  
at android.app.Activity.performStart(Activity.java:5017)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
at android.app.ActivityThread.access$600(ActivityThread.java:130)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
at android.os.Handler.dispatchMessage(Handler.java:99)  
at android.os.Looper.loop(Looper.java:137)  
at android.app.ActivityThread.main(ActivityThread.java:4745)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:511)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
at dalvik.system.NativeStart.main(Native Method)  

ich etwas in den Klassen nicht ändern wirklich nicht finden, die Ausnahme wirft die verwirre mich.

In meinem build.gradle, ich habe Kompilierung 'io.reactivex: rxandroid: 1.2.1' Kompilierung 'io.reactivex: rxjava: 1.1.6'

in meiner beobachtbar, ich sende HTTP-Anfrage mit okHttp, und die genaue Zeile, die Ausnahme auslöst ist

subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()); 

ich jeden Vorschlag müssen ^^, und wenn Sie Fragen haben, lassen Sie es mich wissen.

Auch wenn möglich, kann jemand erklären, was bedeutet dieser Unfall überhaupt? Danke.

EDIT meine build.gradle haben diejenigen

compile 'io.reactivex:rxandroid:1.2.1' 
// Because RxAndroid releases are few and far between, it is recommended you also 
// explicitly depend on RxJava's latest version for bug fixes and new features. 
    compile 'io.reactivex:rxjava:1.1.6' 
    compile 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0' 
    compile 'com.trello:rxlifecycle:0.6.1' 
// If you want pre-written Activities and Fragments you can subclass as providers 
    compile 'com.trello:rxlifecycle-components:0.6.1' 

    compile 'com.mlsdev.rximagepicker:library:1.1.9' 
    compile 'com.github.zellius:rxlocationmanager:0.1.1' 
    compile 'com.sdoward:rxgooglemaps:[email protected]' 
+0

Versuchen Sie './gradlew depen', um zu sehen, welche Version von RxJava tatsächlich nach Lösung aller Abhängigkeiten verwendet wird. – AndroidEx

+0

Haben Sie Proguard benutzt? – nshmura

+0

Ich überprüfte, aber ich habe die Minimierung falsch, so dass ich glaube, dass ein Nein ist –

Antwort

1

NoClassDefFoundError geschieht häufig, wenn die Build-Tools und/oder Hot-Swapping nach dem Wechsel Abhängigkeiten aktualisieren fehlschlägt.

Versuchen Sie eine Build > Clean Project und dann erneut ausführen.

+0

Ich habe kompiliert 'io.reactivex: rxandroid: 1.2.1' entfernt, und gereinigt, umbauen, schließen Sie das Android-Studio, starten Sie es erneut, und versuchte, alle Ordner unter .digle \ caches \ modules \ files-2.1 Ordner zu löschen, bekomme ich immer noch den gleichen Absturz. Auch wenn ich versuche, neue CompositeSubscription zu verwenden, stürzt es ab. aber ich kann diese Klasse tatsächlich öffnen und sehen, was es ist ... –

+0

versuche, auf den neuesten rx-java '1.1 zu aktualisieren.8 ' – Andy

+0

danke, aber immer noch nicht funktioniert –

1

Okay, ich kann erklären, wie ich versuchte zu beheben, und hoffentlich hilft es jemandem. Ich versuchte sauber> einige Male neu zu erstellen, ich habe meine Bibliotheken entfernt, die in c: users \ userName.gradle \ caches \ modules \ files-2.1 installiert wurde, dann versucht, Abhängigkeiten zu überprüfen, ob es Duplikate gibt (einige Bibliotheken können schließen sich gegenseitig intern), und ich habe immer gereinigt und umgebaut. Am Ende habe ich die gesamte Android-Umgebung neu heruntergeladen.

Aber aus irgendeinem Grund erinnerte ich mich daran, dass ich das multidex nicht anwendete und ich tat es, und es funktionierte, und das, was für mich arbeitete. Welche ich verstehe immer noch nicht warum, weil es auf anderen PC ohne multidex

+0

Ich verwende derzeit Multidex. Beeinflusst es die RX-Bibliothek? Weil es für mich sehr seltsam ist. Es wiederholt nicht den Fehler in jedem Gerät. Von den Geräten, mit denen ich konfrontiert bin, ist dies Panasonic P55 Novo. Nicht in irgendwelchen anderen wie Mototrola Nexus 6, Mi4I, Mi5, Redmi, Mi Max, HTC One M9 + ... –

+0

Ok das Problem gefunden ... hat keine Unterstützung für multidex verwendet. Ihr Keyword multidex hat mir geholfen. Danke :) –

+0

Hinzufügen von Multidex Unterstützung auch das Problem für mich behoben ... Danke! – Phil

3

arbeitete Wenn Sie verwenden, dann könnte auch dieses Problem auftreten. Aber in der niedrigeren Version der Telefone.

Alles, was Sie tun müssen, ist, die Verfahren hier gegeben folgen:

https://stackoverflow.com/a/26627133/842607

+0

es funktioniert für mich! Vielen Dank! – angryd