Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter

45,132

Solution 1

Finally found it. It's in the Run/Debug Configurations dialog. Disabled JUnit and it compiles again.

Solution 2

Usually this problem is caused because of wrong test type: Junit instead of Android Test Select Android test instead of JUnit Select Android test instead of JUnit

Solution 3

For standard JUnit tests, you are missing the JUnit library, try adding this in build.gradle:

dependencies {
    ...
    testCompile 'junit:junit:4.12'
    ...
}

And make sure you are putting the tests in the "test" directory parallell to the "main" package (instrumentation tests goes into "androidTest", but that is different setup).

Solution 4

Force the project to "sync" via menu: Tools > Android > Sync Project with Gradle Files or force the project to "sync" by making a fake change in build.gradle file (add a space and then delete it and then click "sync now").

Solution 5

In my Run/Debug Configurations I had MyTest under AndroidTests and under JUnitTests. The MyTest under AndroidTests was configured correctly, but I still got 'NoClassDefFoundError: junit/textui/ResultPrinter' error. Clicked on MyTest under JUnit and pressed '-' in upper left. This allowed MyTest to run through the device got rid of error.

Share:
45,132
Janne Oksanen
Author by

Janne Oksanen

I'm a software engineer specializing in embedded and mobile software. Currently working as an Android application developer.

Updated on March 25, 2020

Comments

  • Janne Oksanen
    Janne Oksanen about 4 years

    I'm trying to compile my Android project in Android Studio 0.3.0. Today I get the following error:

    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
    

    Doing some web searches leads me to believe this issue is somehow related to JUnit. However, I'm not using JUnit in my project. Maybe I've inadvertently turned on some option? In that case, how do I disable unit testing in my project? Any ideas?