Ich versuche, mein Android-Projekt in Android Studio 0.3.0 zu kompilieren. Heute bekomme ich folgende Fehlermeldung:
Exception in thread "main" Java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Class.Java:188)
at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:113)
Caused by: Java.lang.ClassNotFoundException: junit.textui.ResultPrinter
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:217)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:205)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:321)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:294)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
... 3 more
Process finished with exit code 1
Bei einigen Web-Suchen glaube ich, dass dieses Problem irgendwie mit JUnit zusammenhängt. Ich verwende jedoch JUnit nicht in meinem Projekt. Vielleicht habe ich versehentlich eine Option aktiviert? Wie deaktiviere ich in diesem Fall den Gerätetest in meinem Projekt? Irgendwelche Ideen?
Endlich gefunden. Es befindet sich im Dialogfeld "Run/Debug Configurations". Deaktiviert JUnit und es wird erneut kompiliert.
Normalerweise wird dieses Problem durch einen falschen Testtyp verursacht: Junit anstelle von Android Test
Bei JUnit-Standardtests fehlt die JUnit-Bibliothek. Fügen Sie dies in build.gradle hinzu:
dependencies {
...
testCompile 'junit:junit:4.12'
...
}
Stellen Sie sicher, dass Sie die Tests im Verzeichnis "test" parallel zum Paket "main" ablegen.
Erzwingen Sie das "Synchronisieren" des Projekts über das Menü "Extras"> "Android"> "Synchronisieren Sie das Projekt mit den Gradle-Dateien ", Oder erzwingen Sie das "Synchronisieren" des Projekts, indem Sie eine gefälschte Änderung in der Datei build.gradle vornehmen (fügen Sie ein Leerzeichen hinzu und löschen Sie es anschließend Klicken Sie auf "Jetzt synchronisieren").
In meinen Run/Debug-Konfigurationen hatte ich MyTest unter AndroidTests und unter JUnitTests. Der MyTest unter AndroidTests wurde korrekt konfiguriert, aber es wurde immer noch der Fehler "NoClassDefFoundError: junit/textui/ResultPrinter" angezeigt. Auf MyTest unter JUnit geklickt und oben links "-" gedrückt. Dies ermöglichte es MyTest, das Gerät durchlaufen zu lassen, wodurch der Fehler behoben wurde.
Alle Antworten sind gut-
Stellen Sie sicher, dass in sourceSets das Testverzeichnis registriert ist.
Android{
...
defaultConfig {
...
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
sourceSets {
androidTest {
Java.srcDirs = ['src/androidTest/Java']
}
}
}
dependencies{
...
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.Android.support.test:runner:0.5'
}
Ich hatte dieses Problem zweimal, nachdem ich einige build.gradle
-Plugins und Abhängigkeiten geändert hatte.
Das einfache Ein- und Ausschalten von Android Studio hat es für mich behoben (Versionen 2.1.2 und 2.2).