【问题标题】:Android Compiling Error - Failed to find byte code for java/util/function/FunctionAndroid 编译错误 - 找不到 java/util/function/Function 的字节码
【发布时间】:2018-09-12 04:19:09
【问题描述】:

Gradle 版本更新到 3.1 后,运行应用时出现以下错误:

找不到 java/util/function/Function 的字节码

java.io.IOException: 找不到字节码 java/util/function/函数在 com.android.build.gradle.internal.incremental.AsmUtils.lambda$static$0(AsmUtils.java:89) 在 com.android.build.gradle.internal.incremental.AsmUtils.loadClass(AsmUtils.java:307)

有人可以帮我解决这个问题吗?

全栈错误:

org.gradle.api.tasks.TaskExecutionException:任务执行失败 ':app:transformClassesWithInstantRunForMockDebug'。在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) 在 org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) 在 org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在 org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60) 在 org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97) 在 org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87) 在 org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) 在 org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 在 org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在 org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241) 在 org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626) 在 org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581) 在 org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) 在 org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) 在 org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) 在 java.lang.Thread.run(Thread.java:748) 引起: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException:找不到字节码 java/util/function/函数在 com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55) 在 com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104) 在 com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) 在 org.gradle.api.internal.project.taskfactory.IncrementalTask​​Action.doExecute(IncrementalTask​​Action.java:46) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) 在 org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) 在 org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110) 在 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92) ... 32 更多原因: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException:找不到字节码 java/util/function/函数在 com.android.build.gradle.internal.transforms.InstantRunTransform.doTransform(InstantRunTransform.java:312) 在 com.android.build.gradle.internal.transforms.InstantRunTransform.transform(InstantRunTransform.java:178) 在 com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221) 在 com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217) 在 com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102) ... 48 更多原因:java.lang.RuntimeException: java.lang.RuntimeException:java.io.IOException:找不到字节 java/util/function/Function 的代码 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593) 在 java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677) 在 java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720) 在 com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:146) 在 com.android.build.gradle.internal.transforms.InstantRunTransform.doTransform(InstantRunTransform.java:307) ... 52 更多原因:java.lang.RuntimeException: java.io.IOException:找不到字节码 java/util/function/函数在 java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431) 在 java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 在 java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 在 java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 在 java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 原因:java.io.IOException:找不到字节码 java/util/function/函数在 com.android.build.gradle.internal.incremental.AsmUtils.lambda$static$0(AsmUtils.java:89) 在 com.android.build.gradle.internal.incremental.AsmUtils.loadClass(AsmUtils.java:307) 在 com.android.build.gradle.internal.incremental.AsmUtils.readInterfaceHierarchy(AsmUtils.java:216) 在 com.android.build.gradle.internal.incremental.AsmUtils.readInterfaces(AsmUtils.java:251) 在 com.android.build.gradle.internal.incremental.AsmUtils.readInterfaceHierarchy(AsmUtils.java:220) 在 com.android.build.gradle.internal.incremental.AsmUtils.readInterfaces(AsmUtils.java:251) 在 com.android.build.gradle.internal.incremental.AsmUtils.loadClass(AsmUtils.java:288) 在 com.android.build.gradle.internal.incremental.IncrementalVisitor.instrumentClass(IncrementalVisitor.java:342) 在 com.android.build.gradle.internal.transforms.InstantRunTransform.transformToClasses2Format(InstantRunTransform.java:406) 在 com.android.build.gradle.internal.transforms.InstantRunTransform.lambda$doTransform$3(InstantRunTransform.java:268) 在 com.android.build.gradle.internal.transforms.InstantRunTransform.lambda$null$4(InstantRunTransform.java:297) 在 java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) ... 4 更多

【问题讨论】:

    标签: java android android-gradle-plugin


    【解决方案1】:

    似乎有几个原因导致了这个问题。

    如果您使用 Kotlin,请尝试将 forEach{ key, value -> ... } 更改为 forEach{ (key, value) -> ... }

    在我的情况下,我从不使用 Kotlin。禁用 Instant Run 后,此错误消失。

    【讨论】:

    【解决方案2】:

    我在这里找到了我的问题的解决方案:Why does Kotlin byte code reference java.util.function.BiConsumer?

    我正在使用 Kotlin,我找到了使用 forEach{ key, value -> ... } 的行,并将其更改为 forEach{ (key, value) -> ... },这使得 Kotlin 选择了 JRE 6而不是 8。

    【讨论】:

    • +1:添加括号解决了我的问题。我在为 Android API 21 构建时遇到了同样的问题(找不到 BiConsumer 的字节码),并且任何 API
    • 添加括号解决了我的问题
    【解决方案3】:

    这看起来像是编译器问题。 您是否尝试重新启动您的 Android 工作室? 如果是,请尝试

    Build-> Clean Project
    Build-> Make Project
    

    如果问题仍然存在,请尝试通过File > Invalidate Caches & Restart...清除缓存

    如果一切都失败了,请尝试禁用 Instant Run

    【讨论】:

    • 感谢您的帮助。清理项目解决了问题。
    • 这对我不起作用。修复它的唯一方法是禁用即时运行并重试:/.
    【解决方案4】:

    尝试清理并重建/制作您的项目。如果问题仍然存在,请在您的 android studio 中disable Instant Run 并再次运行您的应用程序,这应该可以解决问题。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题,对我有用的是清理 Android Studio 首选项:

      删除 .AndroidStudioX.X

      删除 .gradle

      重启 Android Studio

      然后我遇到了另一个问题,解决方案是禁用 Instant Run。

      希望对某人有所帮助

      【讨论】:

        【解决方案6】:

        当某些 gradle 插件与 minsdk 不匹配时会发生这种情况。我使用的是 sceneform sdk,我的 minsdk 是 22,但它需要 24。当我将 minsdk 从 22 更改为 24 时,它起作用了。

        【讨论】:

          【解决方案7】:

          我有一个类似的问题,它似乎是突然开始的。禁用即时运行是唯一对我有用的解决方法。我知道这里提到了它,但没有看到任何关于禁用它的说明,所以你去吧...... 在 Android Studio 中,选择文件、设置、构建“执行、部署、即时运行”,将“启用即时运行以热交换代码/部署资源更改”设置为未选中。点击应用,好的,调试应该再次工作。感谢提到它的人!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-25
            • 2017-10-12
            • 2018-05-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多