web-dev-qa-db-de.com

Ausnahme im Thread "main" Java.lang.NoClassDefFoundError: junit/textui/ResultPrinter

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? 

62
Janne Oksanen

Endlich gefunden. Es befindet sich im Dialogfeld "Run/Debug Configurations". Deaktiviert JUnit und es wird erneut kompiliert.

57
Janne Oksanen

Normalerweise wird dieses Problem durch einen falschen Testtyp verursacht:  Junit anstelle von Android Test Select Android test instead of JUnitSelect Android test instead of JUnit

27
radistao

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.

8
powder366

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").

6
Pnemonic

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.

1
flobacca

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'
}
0
Manisha

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).

0
Tom