2016-08-28 9 views
5

Я вижу следующую ошибку в моем проекте Android после обновления до Gradle Build Tools 2.1.3 и Gradle 2.14.1. Это происходит сразу же после запуска приложения. Как это исправить?java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_14f7ee5/Offline

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 

ответ

13

Был отчёт об ошибке подали: https://code.google.com/p/android/issues/detail?id=220640

Это выглядит как проблема с версиями jacoco. Вам нужно будет обновить вашу jacocoversion до 0.7.6.201602180812.

Цитирую выпуска:

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.

Это также выглядит как одна возможная ошибка может быть связана с Google Play. На данный момент существуют временные обходные пути.

Вариант 1: Комментарий testCoverageEnabled true.

buildTypes { 
    debug { 
     // testCoverageEnabled true 
    } 
} 

Вариант 2: Использование Instant Run также, кажется, чтобы решить эту проблему.

+0

Включение мгновенного запуска исправлено для меня, потому что я не мог изменить версию плагина (он не был указан в моем исходном коде напрямую). –

0

Для тех, кто сталкивается эту ошибку при запуске UI Test с покрытием jacoco кода с помощью createDebugCoverageReport задача

Добавление этого банку решить эту проблему

Missing Jacoco Components Jar

Ответ взятую из

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

Я столкнулась эта ошибка во время выполнения теста пользовательского интерфейса с покрытием на андроида проект библиотеки с андроид приложения проекта каждая вещь работает отлично только проект андроида библиотека сталкивается Эта проблема

0

Я думаю, я нашел лучшее решение этой проблемы. По какой-то причине jacoco-agent.jar не включается по умолчанию, и у него есть параметр Offline.class, который не может быть найден. Вам просто нужно добавить зависимость для агента. Тем не менее, убедитесь, что это точно такая же версия, как версия плагина jacoco, которую вы используете, поскольку конечный пакет Offline.class находится в хеше фиксации. Вот что я делаю:

компиляции 'org.jacoco: jacoco-Maven-плагин: 0.7.9'

компиляции 'org.jacoco: org.jacoco.agent: 0.7.9: во время выполнения'