loeschg
loeschg

Reputation: 30581

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_14f7ee5/Offline

I'm seeing the following error in my Android project after updating to Gradle Build Tools 2.1.3 and Gradle 2.14.1. It happens immediately when I run the application. How do I fix this?

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_14f7ee5/Offline;
at com.ourapp.next.conversation.SomeList.SomeListViewModel.$jacocoInit(SomeListViewModel.java)
at com.ourapp.next.conversation.SomeList.SomeListViewModel.(SomeListViewModel.java)
at com.ourapp.next.conversation.SomeList.SomeListAdapterTest.(SomeListAdapterTest.java:26)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:217)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1853)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.jacoco.agent.rt.internal_14f7ee5.Offline" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.ourapp.next.debug.test-1/base.apk", zip file "/data/app/com.ourapp.next.debug-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
... 30 more
Suppressed: java.lang.ClassNotFoundException: org.jacoco.agent.rt.internal_14f7ee5.Offline
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 31 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Upvotes: 16

Views: 23869

Answers (5)

StefanTo
StefanTo

Reputation: 1020

I had the same issue with AGP 7.2.1 and Jacoco 0.8.7.

Adding this dependency to my app/build.gradle fixed it:

debugImplementation 'androidx.fragment:fragment-testing:1.4.1'

Upvotes: 3

Hadi hashemi
Hadi hashemi

Reputation: 494

After two days of searching for a solution, finally found this! just need to add this dependency:

implementation "org.jacoco:org.jacoco.agent:0.8.7:runtime"

Upvotes: 1

Ryan Newsom
Ryan Newsom

Reputation: 696

I think I found the best solution to this issue. For some reason the jacoco-agent.jar does not get included by default and it has the Offline.class that can't be found. You simply need to add the dependency for the agent. However, make sure it is the exact same version as the version of the jacoco plugin you are using since the end package Offline.class is found in is a commit hash. Here is what I am doing:

compile 'org.jacoco:jacoco-maven-plugin:0.7.9'

compile 'org.jacoco:org.jacoco.agent:0.7.9:runtime'

Upvotes: 2

Ankur
Ankur

Reputation: 419

For anyone facing this error while running UI Test with jacoco code coverage using createDebugCoverageReport task

Adding this jar solved this problem

Missing Jacoco Components Jar

Answer taken from

https://stackoverflow.com/a/42698722/3053781

I was facing this error while running UI test with coverage on android library project with android application project every thing was working fine only android library project was facing this issue

Upvotes: 2

loeschg
loeschg

Reputation: 30581

There was a bug report filed: https://code.google.com/p/android/issues/detail?id=220640

This looks to be a problem with jacoco versions. You'll need to update your jacocoversion to 0.7.6.201602180812.

To quote from the issue:

The jacoco plugin version was bumped from 0.7.4.201502262128 to 0.7.6.201602180812 between 2.1.2 to 2.1.3 which is the likely cause of this issue.

In 2.2 it is 0.7.5.201505241946.

It also looks like one possible error might be related to Google Play Services. There are temporary workarounds for the time being.

Option 1: Comment out testCoverageEnabled true.

buildTypes {
    debug {
        // testCoverageEnabled true
    }
}

Option 2: Using Instant Run also seems to solve this problem.

Upvotes: 28

Related Questions