2017-03-02 3 views
0

Ich bekomme den folgenden Absturz während eines Instrumentierungstests NUR auf Emulatoren, die API v19 ausführen. Wenn ich auf neueren Versionen laufe, funktioniert alles einwandfrei.NoClassDefFoundError ObjenesisStd auf Android API 19

03-01 20:26:18.781 2878-2878/? E/MonitoringInstrumentation: Exception encountered by: Thread[main,5,main]. Dumping thread state to outputs and pining for the fjords. java.lang.NoClassDefFoundError: org.objenesis.ObjenesisStd at org.mockito.internal.creation.jmock.ClassImposterizer.(ClassImposterizer.java:36) at org.mockito.internal.creation.jmock.ClassImposterizer.(ClassImposterizer.java:29) at org.mockito.internal.util.MockCreationValidator.isTypeMockable(MockCreationValidator.java:17) at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:21) at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:133) at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:127) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:50) at org.mockito.Mockito.mock(Mockito.java:1243) at org.mockito.Mockito.mock(Mockito.java:1120)

Das Problem ist, diese Zeile:

java.lang.NoClassDefFoundError: org.objenesis.ObjenesisStd

Meine app ist Multi-dex, und ich bin mit dexmaker-Mockito für androidTestCompile. Ich habe einen kompletten Verlust, warum das nur bei einer älteren API passiert. Es begann, als ich meinem Projekt ein weiteres Modul hinzufügte, das ein reines Java-Modul ohne Abhängigkeit von Mockito ist.

Antwort

0

Diese Ausnahme (ClassNotFoundException) informiert Sie über eine ungedeckte Abhängigkeit zur Laufzeit: das muss JVM eine Klasse laden; was nicht im Klassenpfad vorhanden ist.

Hier ist es Mockito, die Objenesis benötigt. Normalerweise sollte diese Bibliothek automatisch gezogen werden, wenn Sie ein System wie Maven und geben Sie die richtige Abhängigkeit zu Mockito.

+0

Objenesis ist in der Abhängigkeitsbaumstruktur für androidTestCompile aufgeführt, wenn ich die Abhängigkeiten über Gradle ausgab. Was wirklich merkwürdig ist, ist, dass dies nur auf Geräten mit Android API Version 19 und niedriger passiert. –

Verwandte Themen