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
バグレポートが提出されました: 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開発者サービスに関連している可能性があるようです。当面の間、一時的な回避策があります。
オプション1:testCoverageEnabled true
をコメントアウトします。
buildTypes {
debug {
// testCoverageEnabled true
}
}
オプション2:インスタント実行を使用することもこの問題を解決するようです。
私はこの問題に対する最善の解決策を見つけたと思います。何らかの理由で、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'
createDebugCoverageReportタスクを使用してjacocoコードカバレッジでUIテストを実行しているときにこのエラーに直面している人のために
このjarを追加すると、この問題が解決しました
からの回答
https://stackoverflow.com/a/42698722/3053781
Androidライブラリプロジェクトwith Androidアプリケーションプロジェクトはすべて正常に機能していましたAndroidライブラリプロジェクトはこの問題に直面していました