web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:失敗した解決:Lorg / jacoco / agent / rt / internal_14f7ee5 / Offline

Gradle Build Tools2.1.3およびGradle2.14.1に更新した後、Androidプロジェクトで次のエラーが表示されます。アプリケーションを実行するとすぐに発生します。これを修正するにはどうすればよいですか?

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
7
loeschg

バグレポートが提出されました: https://code.google.com/p/Android/issues/detail?id=22064

これは、jacocoバージョンの問題のようです。 jacocoversionを0.7.6.201602180812に更新する必要があります。

問題から引用するには:

Jacocoプラグインのバージョンが2.1.2から2.1.3の間で0.7.4.201502262128から0.7.6.201602180812にバンプされました。これが、この問題の原因である可能性があります。

2.2では0.7.5.201505241946です。

また、考えられるエラーの1つがGooglePlay開発者サービスに関連している可能性があるようです。当面の間、一時的な回避策があります。

オプション1testCoverageEnabled trueをコメントアウトします。

buildTypes {
    debug {
        // testCoverageEnabled true
    }
}

オプション2:インスタント実行を使用することもこの問題を解決するようです。

17
loeschg

私はこの問題に対する最善の解決策を見つけたと思います。何らかの理由で、jacoco-agent.jarはデフォルトで含まれず、Offline.classが見つかりません。エージェントの依存関係を追加するだけです。ただし、Offline.classの最終パッケージがコミットハッシュであるため、使用しているjacocoプラグインのバージョンとまったく同じバージョンであることを確認してください。これが私がしていることです:

コンパイル 'org.jacoco:jacoco-maven-plugin:0.7.9'

コンパイル 'org.jacoco:org.jacoco.agent:0.7.9:runtime'

2
Ryan Newsom

createDebugCoverageReportタスクを使用してjacocoコードカバレッジでUIテストを実行しているときにこのエラーに直面している人のために

このjarを追加すると、この問題が解決しました

Jacoco Components Jarがありません

からの回答

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

Androidライブラリプロジェクトwith Androidアプリケーションプロジェクトはすべて正常に機能していましたAndroidライブラリプロジェクトはこの問題に直面していました

1
Ankur