flutter编译e: Daemon compilation failed: null java.lang.Exception错误解决

文章目录

  • 错误描述
  • 解决方法
      • 修复步骤
        • [1. 清理项目缓存](#1. 清理项目缓存)
        • [2. 检查项目路径一致性](#2. 检查项目路径一致性)
        • [3. 强制禁用增量编译](#3. 强制禁用增量编译)
        • [4. 更新依赖项](#4. 更新依赖项)
        • [5. 检查 Kotlin 和 Gradle 插件版本](#5. 检查 Kotlin 和 Gradle 插件版本)
        • [6. 删除 Kotlin 编译器守护进程](#6. 删除 Kotlin 编译器守护进程)
        • [7. 重新编译项目](#7. 重新编译项目)

错误描述

flutter应用编译时报如下错误e: Daemon compilation failed: null

java.lang.Exception

at org.jetbrains.kotlin.daemon.common.CompileService C a l l R e s u l t CallResult CallResultError.get(CompileService.kt:69)

at org.jetbrains.kotlin.daemon.common.CompileService C a l l R e s u l t CallResult CallResultError.get(CompileService.kt:65)

at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:244)

at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:175)

at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:135)

at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:73)

at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)

at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)

at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)

at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)

at org.gradle.workers.internal.NoIsolationWorkerFactory 1. l a m b d a 1.lambda 1.lambdaexecute$0(NoIsolationWorkerFactory.java:62)

at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)

at org.gradle.workers.internal.AbstractWorker 1. c a l l ( A b s t r a c t W o r k e r . j a v a : 41 ) a t o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r 1.call(AbstractWorker.java:41) at org.gradle.internal.operations.DefaultBuildOperationRunner 1.call(AbstractWorker.java:41)atorg.gradle.internal.operations.DefaultBuildOperationRunnerCallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)

at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)

at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)

at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)

at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)

at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)

at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)

at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)

at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)

at org.gradle.workers.internal.NoIsolationWorkerFactory 1. e x e c u t e ( N o I s o l a t i o n W o r k e r F a c t o r y . j a v a : 59 ) a t o r g . g r a d l e . w o r k e r s . i n t e r n a l . D e f a u l t W o r k e r E x e c u t o r . l a m b d a 1.execute(NoIsolationWorkerFactory.java:59) at org.gradle.workers.internal.DefaultWorkerExecutor.lambda 1.execute(NoIsolationWorkerFactory.java:59)atorg.gradle.workers.internal.DefaultWorkerExecutor.lambdasubmitWork 2 ( D e f a u l t W o r k e r E x e c u t o r . j a v a : 205 ) a t j a v a . b a s e / j a v a . u t i l . c o n c u r r e n t . F u t u r e T a s k . r u n ( F u t u r e T a s k . j a v a : 264 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t C o n d i t i o n a l E x e c u t i o n Q u e u e 2(DefaultWorkerExecutor.java:205) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.gradle.internal.work.DefaultConditionalExecutionQueue 2(DefaultWorkerExecutor.java:205)atjava.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)atorg.gradle.internal.work.DefaultConditionalExecutionQueueExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)

at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access 700 ( D e f a u l t C o n d i t i o n a l E x e c u t i o n Q u e u e . j a v a : 120 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t C o n d i t i o n a l E x e c u t i o n Q u e u e 700(DefaultConditionalExecutionQueue.java:120) at org.gradle.internal.work.DefaultConditionalExecutionQueue 700(DefaultConditionalExecutionQueue.java:120)atorg.gradle.internal.work.DefaultConditionalExecutionQueueExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)

at org.gradle.internal.Factories 1. c r e a t e ( F a c t o r i e s . j a v a : 31 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t W o r k e r L e a s e S e r v i c e . w i t h L o c k s ( D e f a u l t W o r k e r L e a s e S e r v i c e . j a v a : 249 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t W o r k e r L e a s e S e r v i c e . r u n A s W o r k e r T h r e a d ( D e f a u l t W o r k e r L e a s e S e r v i c e . j a v a : 109 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t W o r k e r L e a s e S e r v i c e . r u n A s W o r k e r T h r e a d ( D e f a u l t W o r k e r L e a s e S e r v i c e . j a v a : 114 ) a t o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t C o n d i t i o n a l E x e c u t i o n Q u e u e 1.create(Factories.java:31) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109) at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114) at org.gradle.internal.work.DefaultConditionalExecutionQueue 1.create(Factories.java:31)atorg.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249)atorg.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)atorg.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114)atorg.gradle.internal.work.DefaultConditionalExecutionQueueExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)

at org.gradle.internal.work.DefaultConditionalExecutionQueue E x e c u t i o n R u n n e r . r u n ( D e f a u l t C o n d i t i o n a l E x e c u t i o n Q u e u e . j a v a : 126 ) a t j a v a . b a s e / j a v a . u t i l . c o n c u r r e n t . E x e c u t o r s ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126) at java.base/java.util.concurrent.Executors ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)atjava.base/java.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:515)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)

at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)

at org.gradle.internal.concurrent.ManagedExecutorImpl 1. r u n ( M a n a g e d E x e c u t o r I m p l . j a v a : 48 ) a t j a v a . b a s e / j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1128 ) a t j a v a . b a s e / j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r 1.run(ManagedExecutorImpl.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor 1.run(ManagedExecutorImpl.java:48)atjava.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)atjava.base/java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:628)

at java.base/java.lang.Thread.run(Thread.java:829)

Caused by: java.lang.IllegalArgumentException: this and base files have different roots: C:\Users\YUAN\AppData\Local\Pub\Cache\hosted\pub.dev\wakelock-0.6.2\android\src\main\kotlin\creativemaybeno\wakelock\Wakelock.kt and D:\WORK\myLearningWork\development\learning\android.

at kotlin.io.FilesKt__UtilsKt.toRelativeString(Utils.kt:117)

at kotlin.io.FilesKt__UtilsKt.relativeTo(Utils.kt:128)

at org.jetbrains.kotlin.incremental.storage.RelocatableFileToPathConverter.toPath(RelocatableFileToPathConverter.kt:22)

at org.jetbrains.kotlin.incremental.storage.ComplementarySourceFilesMap.get(ComplementarySourceFilesMap.kt:22)

at org.jetbrains.kotlin.incremental.AbstractIncrementalCache.getComplementaryFilesRecursive(AbstractIncrementalCache.kt:219)

at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:455)

at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:400)

at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:281)

at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:125)

at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:657)

at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:105)

at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1624)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:566)

at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)

at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)

at java.rmi/sun.rmi.transport.Transport 1. r u n ( T r a n s p o r t . j a v a : 197 ) a t j a v a . b a s e / j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) a t j a v a . r m i / s u n . r m i . t r a n s p o r t . T r a n s p o r t . s e r v i c e C a l l ( T r a n s p o r t . j a v a : 196 ) a t j a v a . r m i / s u n . r m i . t r a n s p o r t . t c p . T C P T r a n s p o r t . h a n d l e M e s s a g e s ( T C P T r a n s p o r t . j a v a : 562 ) a t j a v a . r m i / s u n . r m i . t r a n s p o r t . t c p . T C P T r a n s p o r t 1.run(Transport.java:197) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562) at java.rmi/sun.rmi.transport.tcp.TCPTransport 1.run(Transport.java:197)atjava.base/java.security.AccessController.doPrivileged(NativeMethod)atjava.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)atjava.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)atjava.rmi/sun.rmi.transport.tcp.TCPTransportConnectionHandler.run0(TCPTransport.java:796)

at java.rmi/sun.rmi.transport.tcp.TCPTransport C o n n e c t i o n H a n d l e r . l a m b d a ConnectionHandler.lambda ConnectionHandler.lambdarun 0 ( T C P T r a n s p o r t . j a v a : 677 ) a t j a v a . b a s e / j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) a t j a v a . r m i / s u n . r m i . t r a n s p o r t . t c p . T C P T r a n s p o r t 0(TCPTransport.java:677) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.rmi/sun.rmi.transport.tcp.TCPTransport 0(TCPTransport.java:677)atjava.base/java.security.AccessController.doPrivileged(NativeMethod)atjava.rmi/sun.rmi.transport.tcp.TCPTransportConnectionHandler.run(TCPTransport.java:676)

... 3 more

解决方法

从错误日志可以看出,问题的核心是 Kotlin 编译器守护进程(Kotlin Compiler Daemon)在进行增量编译时出现了异常,并伴随文件路径的根目录不一致问题。

错误原因主要包括:

  1. 路径冲突C:\Users\YUAND:\WORK 是两个不同的路径根目录,Kotlin 编译器可能无法正确解析它们的相对路径关系。
  2. 增量编译问题:Kotlin 的增量编译缓存可能损坏,导致编译失败。
  3. 插件或依赖问题 :可能是依赖的插件(如 wakelock)或编译器配置存在问题。

修复步骤

1. 清理项目缓存

清除所有缓存和生成的中间文件:

bash 复制代码
flutter clean

然后删除 build 文件夹和 .gradle 文件夹:

bash 复制代码
rm -rf android/.gradle
rm -rf build

重新获取依赖和编译:

bash 复制代码
flutter pub get
flutter build apk

2. 检查项目路径一致性

确保你的项目和所有依赖项都在同一个磁盘分区内。将项目移动到与 Flutter SDK 相同的磁盘。例如,把项目从 D:\WORK 移动到 C:\Users\YUAN 下的某个子文件夹。


3. 强制禁用增量编译

增量编译虽然能加快编译速度,但在某些情况下会引发问题。尝试在 android/gradle.properties 文件中添加以下内容:

properties 复制代码
kotlin.incremental=false

4. 更新依赖项

某些旧版插件可能与当前的 Flutter 或 Kotlin 编译器版本不兼容。更新依赖项:

  • 确保 pubspec.yaml 中插件的版本是最新的:

    yaml 复制代码
    wakelock: ^0.6.2+2
  • 运行以下命令更新依赖:

    bash 复制代码
    flutter pub upgrade

5. 检查 Kotlin 和 Gradle 插件版本
  • 确保你的 Kotlin 和 Gradle 插件版本匹配:
    • 检查 android/build.gradle 中的 Gradle 插件版本(例如,com.android.tools.build:gradle:7.4.2)。

    • 检查 android/gradle/wrapper/gradle-wrapper.properties 中的 Gradle 版本(例如,distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip)。

    • 检查 kotlin_version 是否与 Gradle 插件版本兼容:

      gradle 复制代码
      ext.kotlin_version = "1.8.22"

可以参考 Gradle Plugin Compatibility Table 确保版本一致。


6. 删除 Kotlin 编译器守护进程

Kotlin 守护进程可能有残留。尝试终止守护进程并清理相关缓存:

bash 复制代码
pkill -f kotlin-daemon

如果你在 Windows 上,手动结束 Kotlin 守护进程相关任务。


7. 重新编译项目

执行以下命令进行完整编译:

bash 复制代码
flutter build apk


结束语

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

相关推荐
喜欢AC~不爱WA3 分钟前
简单的Java小项目
java·开发语言
互联网动态分析8 分钟前
Apache Kafka:实时数据流处理的强大引擎
java·kafka
泰山小张只吃荷园12 分钟前
期末复习-计算机网络篇
java·网络·网络协议·计算机网络·面试
qq85722263115 分钟前
java+springboot+mysql科研成果管理系统
java·spring boot·mysql
m0_7482526027 分钟前
用Maven开发Spring Boot 项目
java·spring boot·maven
小五Z28 分钟前
高阶数据结构--B树&&B+树实现原理&&B树模拟实现--Java
java·数据结构·b树·算法
机智阳31 分钟前
介绍一个InnoDB的数据页,和B+树的关系是什么?
java·数据结构·分布式·后端·b树
2401_8576100335 分钟前
剖析 SSM 校园一卡通密钥管理系统 PF 技术架构中安全机制的深度融合
java·数据库·安全
HUT_Tyne2651 小时前
力扣--LCR 131. 砍竹子1
java·算法·leetcode
啊松同学1 小时前
【Spring】使用@Async注解后导致的循环依赖问题
java·后端·spring