如何解决 Gradle 构建错误:java.lang.NoSuchMethodError
回答 3
浏览 1573
2023-10-23
我正在尝试构建我的项目,但每次都会出现以下错误:
错误1
java.lang.NoSuchMethodError: 'kotlin.sequences.Sequence com.google.devtools.ksp.processing.Resolver.getPackagesWithAnnotation(java.lang.String)'
at androidx.room.compiler.processing.ksp.KspRoundEnv.getElementsAnnotatedWith(KspRoundEnv.kt:107)
at androidx.room.compiler.processing.CommonProcessorDelegate.processRound(XBasicAnnotationProcessor.kt:100)
at androidx.room.compiler.processing.ksp.KspBasicAnnotationProcessor.process(KspBasicAnnotationProcessor.kt:62)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$6$1.invoke(KotlinSymbolProcessingExtension.kt:291)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension$doAnalysis$6$1.invoke(KotlinSymbolProcessingExtension.kt:289)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.handleException(KotlinSymbolProcessingExtension.kt:394)
at com.google.devtools.ksp.AbstractKotlinSymbolProcessingExtension.doAnalysis(KotlinSymbolProcessingExtension.kt:289)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:123)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:99)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:257)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:42)
at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:115)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:248)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:88)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli$default(KotlinToJVMBytecodeCompiler.kt:47)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:167)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:53)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:101)
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.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1645)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)
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(AccessController.java:712)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
错误2
Execution failed for task ':core:database:kspDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
> Internal compiler error. See log for more details
文件内容
这是我的项目级别 build.gradle.kts 文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.1.2" apply false
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
id("com.android.library") version "8.1.2" apply false
id("com.google.dagger.hilt.android") version "2.48" apply false
id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}
这是我的模块级 build.gradle.kts 文件:
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
id("com.google.devtools.ksp")
id("com.google.dagger.hilt.android")
}
android {
namespace = "com.yangian.superclock.core.database"
compileSdk = 34
defaultConfig {
minSdk = 28
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles("consumer-rules.pro")
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.10.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
// implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.7.3")
implementation("org.jetbrains.kotlin:kotlin-test:1.9.10")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
androidTestImplementation("androidx.test:core:1.5.0")
// Room
val roomVersion = "2.6.0"
implementation("androidx.room:room-runtime:$roomVersion")
implementation("androidx.room:room-ktx:$roomVersion")
ksp("androidx.room:room-compiler:$roomVersion")
// Dagger Hilt
val daggerVersion = "2.48"
implementation("com.google.dagger:hilt-android:$daggerVersion")
ksp("com.google.dagger:hilt-android-compiler:$daggerVersion")
}
我是 Android 开发新手,gradle 错误总是让我害怕。我试图向巴德和宾寻求帮助,但没有任何效果。所以,你们是我最后的依靠。请帮助我解决这些错误。请随时询问有关该项目的更多信息,以解决该错误。
我遇到了同样的问题,尝试将你的 hilt 降级到 2.48,我还建议将 Hilt 插件和依赖项保留在同一版本中。 id(“com.google.dagger.hilt.android”)版本“2.48”应用错误实现(“com.google.dagger:hilt-android:2.48”)ksp(“com.google.dagger:hilt-compiler:2.48” ”)
- ibrhm117 2023-10-23
@ibrhm117 感谢您的建议,我已将插件和依赖项中的版本降级为
2.48
。但问题仍然存在。我相信这个问题与ksp
有关。
- SONU 2023-10-23
我也面临着与你完全相同的问题,我将
room
降级到最后一个稳定版本,即2.5.2
,它为我解决了这个问题。最新版本2.6.0
似乎有一些问题
- Danish Ansari 2023-10-23
谢谢@DanishAnsari,你的方法对我有用。早些时候它给出了一些像
Internal Compiler Error
这样的消息。但是在我将room
版本更改为2.5.2
之后,它为我提供了文件中实际错误的日志。
- SONU 2023-10-23
Issuetracker 中有一条评论:issuetracker.google.com/issues/303703303#comment3。 KSP,意味着 Kotlin,也意味着 Dagger(由于元数据),必须更新。
- Sever 2023-10-24
3 个回答
#1楼
已采纳
得票数 12
我有一种感觉(还没有深入研究)Dagger/Hilt 版本 2.48
与有点过时的 Kotlin 语言版本不兼容(这就是你所拥有的,基于你的 Gradle 的内容)文件)。
你可能需要碰撞
org.jetbrains.kotlin.android
至1.9.10
;com.google.devtools.ksp
至1.9.10-1.0.13
;
您可以将 Dagger/Hilt 设置为 2.48.1
,将 Room 设置为 2.6.0
。
我刚刚在我从事的项目中将 Room 升级到 2.6.0
,这些是我最终拥有的版本。就像魅力一样,你提到的例外已经消失了。
更新。是的,实际上有一个关于相同内容的讨论 Google 问题跟踪器上的问题;使用 Room 2.6.0 需要最新版本的 Kotlin 和 KSP。
#2楼
得票数 1
将 kotlin 更新到 1.9.10
composeOptions {
kotlinCompilerExtensionVersion '1.5.3'
}
plugins {
id 'com.android.library' version '8.1.2' apply false
id 'com.android.application' version '8.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.9.10' apply false
id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
}
#3楼
得票数 0
尝试保持插件的顺序
模块级 build.gradle.kts
plugins {
id("com.android.application")
id("dagger.hilt.android.plugin")
id("org.jetbrains.kotlin.android")
id("kotlin-parcelize")
id("com.google.gms.google-services")
id("com.google.devtools.ksp")
}
应用程序级别 build.gradle.kts
plugins {
id("com.android.library") version "8.1.2" apply false
id("com.android.application") version "8.1.2" apply false
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
id("com.google.dagger.hilt.android") version "2.48" apply false
id("com.google.gms.google-services") version "4.3.15" apply false
id("com.google.devtools.ksp") version "1.8.10-1.0.9" apply false
}
我在更新到 hilt 2.48.1 时遇到了您提到的同样问题,降级是我能够解决此问题的唯一方法。
另外,正如 hata 指出的那样,从模块级 build.gradle 中删除 id("com.android.library") 。千米。
我尝试了你和哈塔的建议,但没有成功。
- SONU 2023-10-23