androidandroid-studioandroid-testingandroid-unit-testing

NoClassDefFoundError on running unit test after updating Android Studio to ArticFox | 2020.3.1


Test Events were not Received Error:

NoClassDefFoundError on running unit test after updating android studio to ArticFox | 2020.3.1.

Below is the full error:

java.lang.NoClassDefFoundError: jdk/internal/reflect/GeneratedSerializationConstructorAccessor1
at jdk.internal.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:1092)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2180)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:68)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:73)

Caused by: java.lang.ClassNotFoundException: jdk.internal.reflect.GeneratedSerializationConstructorAccessor1
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 11 more

I have just downloaded the latest android studio, clone a project and trying to run unit tests.

How can I fix this? I am using embedded JDK (which is Java 11.0).


Solution

  • It was happening due to the jacoco. Latest android studio comes with Java 11 but we were using Java 9. Making below changes fixed it.

    jacoco { includeNoLocationClasses = true }
    

    to

    jacoco {
       includeNoLocationClasses = true
       excludes = ['jdk.internal.*'] 
    }