android - Android Jacoco Instrumentation 因 JDK11 的 IllegalArgumentException 而失败
问题描述
我正在尝试将包含大量模块的庞大 Android 项目更新到 JDK 11。当我尝试运行构建时,出现大量失败并出现上述异常并显示以下消息:
> Unable to instrument file with Jacoco: file= /../<FileName>.class
> Error while instrumenting class SerializableChange(file=/../<FileName>)
我试图检查 jacoco 库中的 Instrumenter.java 类,但找不到非法参数异常是什么。
我还尝试使用 --debug 和 --stacktrace 选项运行,但由于代码库非常庞大,构建在运行几个小时后中止。
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':photo:jacocoDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
•••
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.JacocoTask$InstrumentDirAction
at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:336)
•••
Caused by: java.io.UncheckedIOException: Unable to instrument file with Jacoco: file=/opt/devops/workspace/Android_OpenJDK_11/andrcore/photo/build/tmp/kotlin-classes/debug/com/../photo/FileName.class, fileStatus=NEW, normalizedPath=com/../photo/FileName.class
at com.android.build.gradle.internal.tasks.JacocoTask$InstrumentDirAction.execute(JacocoTask.java:304)
•••
Caused by: java.io.IOException: Error while instrumenting class SerializableChange(file=/opt/devops/workspace/Android_OpenJDK_11/andrcore/photo/build/tmp/kotlin-classes/debug/com/../photo/FileName.class, fileStatus=NEW, normalizedPath=com/../photo/FileName.class).
at org.jacoco.core.instr.Instrumenter.instrumentError(Instrumenter.java:166)
•••
at com.android.build.gradle.internal.tasks.JacocoTask$InstrumentDirAction.execute(JacocoTask.java:298)
•••
Caused by: java.lang.IllegalArgumentException: (No message provided)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:185)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:168)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:114)
at org.jacoco.core.instr.Instrumenter.instrument(Instrumenter.java:136)
at com.android.build.gradle.internal.tasks.JacocoTask$InstrumentDirAction.execute(JacocoTask.java:298)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:49)
at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:43)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:43)
at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:49)
at org.gradle.workers.internal.IsolatedClassloaderWorker.run(IsolatedClassloaderWorker.java:30)
at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:85)
at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:55)
at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:138)
at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:135)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.lang.Thread.run(Thread.java:829)
非常感谢任何帮助。
似乎很少有其他人也有这个问题,并且觉得在这里添加一个链接https://github.com/gradle/gradle/issues/18719相关。
解决方案
推荐阅读
- sql - 更改 SQL 中列的显示顺序
- next.js - Nextjs 和工作箱集成
- angular - 有什么方法可以在 Ag-Grid(Angular)中使用 API 调用中的 coldefs 字段值?
- angular - GitLab 管道因异常而失败:无法读取未定义的属性“减号”
- ruby - 有没有办法使用 RuboCop 进行增量 linting?
- c# - .NET 应用程序在错误的位置寻找运行时
- javascript - 如何在一个html页面中运行多个录音实例?
- mysql - MySql:如何使用两个日期时间字段获取每个组的最新记录?
- python - Python 中的 HackerRank 数组操作
- javascript - 使用 cola.js 和 Cytoscape 的 Y 轴力