Android Studio构建报错java.lang.NoSuchMethodError求助
Kotlin与Compose版本不兼容报错的解决方案
我尝试调整Gradle版本以添加Git仓库作为依赖后出现报错,即便回滚所有修改,问题仍持续存在。已尝试清理构建并重新构建、失效缓存并重启IDE、删除项目目录重新克隆代码、卸载重装Android Studio,均无法解决。报错堆栈如下:
java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.common.messages.MessageCollector.report$default(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity, java.lang.String, org.jetbrains.kotlin.cli.common.messages.CompilerMessageSourceLocation, int, java.lang.Object)' at androidx.compose.compiler.plugins.kotlin.ComposeComponentRegistrar$Companion.checkCompilerVersion(ComposePlugin.kt:244) at androidx.compose.compiler.plugins.kotlin.ComposeComponentRegistrar.registerProjectComponents(ComposePlugin.kt:199) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.registerExtensionsFromPlugins$cli(KotlinCoreEnvironment.kt:656) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.registerExtensionsFromPlugins(KotlinCoreEnvironment.kt:169) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.configureProjectEnvironment(KotlinCoreEnvironment.kt:566) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:199) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:108) at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:445) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:192) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:143) at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:53) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:99) at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:47) at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:475) at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:125) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:373) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally$default(IncrementalCompilerRunner.kt:318) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.rebuild(IncrementalCompilerRunner.kt:114) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:207) at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:79) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:625) at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:101) at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1746) at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(Unknown Source) 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.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$ConnectionHandler.run0(TCPTransport.java:796) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
错误分析
该报错本质是Compose编译器插件与当前使用的Kotlin版本不兼容。从堆栈信息可见,Compose插件在检查Kotlin版本时调用了一个不存在的方法,说明两者版本未匹配。即便回滚Gradle修改,本地缓存、依赖锁文件或Git仓库依赖可能残留了不兼容的版本配置。
解决办法
- 强制对齐Kotlin与Compose版本:按照Android官方的Kotlin与Compose版本对应关系,在项目根目录的
build.gradle(或build.gradle.kts)中明确指定统一版本,示例:// 根build.gradle.kts plugins { id("com.android.application") version "7.4.2" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false } // 模块build.gradle.kts中的Compose配置 composeOptions { kotlinCompilerExtensionVersion = "1.4.3" // 与Kotlin 1.8.20对应 } - 清理Gradle全局缓存:找到本地Gradle缓存目录(Windows:
C:\Users\<用户名>\.gradle;Mac/Linux:~/.gradle),删除caches和wrapper文件夹,之后重新同步项目。 - 删除依赖锁文件:若项目中存在
gradle.lockfile或启用了依赖锁定,删除相关锁文件后重新同步Gradle。 - 强制刷新依赖:在Android Studio中点击
File → Sync Project with Gradle Files,或在终端执行命令:# Mac/Linux ./gradlew clean build --refresh-dependencies # Windows gradlew clean build --refresh-dependencies - 排查Git仓库依赖冲突:若添加的Git仓库依赖自带Kotlin或Compose相关依赖,可能破坏版本一致性,可在模块
build.gradle中排除冲突依赖,示例:implementation("com.example:your-git-dependency:1.0") { exclude(group = "org.jetbrains.kotlin") exclude(group = "androidx.compose.compiler") }
内容的提问来源于stack exchange,提问作者Regress.arg
相关产品推荐
相关产品推荐

