使用Realm与Kotlin构建Android应用时:app:kaptGenerateStubsDebugKotlin任务失败
解决Kotlin Android集成Realm时构建失败(kaptGenerateStubsDebugKotlin报错)
我之前也碰到过类似的构建问题,结合你给出的堆栈跟踪,核心错误是java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context——这个类属于JDK的tools.jar,说明你的构建环境可能在使用JRE而非完整JDK,再加上Realm与Kapt的配置可能存在疏漏。试试下面的解决方案:
1. 确保Gradle使用完整JDK而非JRE
- 打开Android Studio,进入
File > Project Structure > SDK Location,检查JDK Location是否指向完整的JDK目录(比如C:\Program Files\Java\jdk1.8.0_291),而不是JRE目录。 - 或者直接在项目根目录的
gradle.properties文件中添加JDK路径配置:
(替换成你本地实际的JDK路径)org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_291
2. 修正Realm与Kapt的Gradle配置
项目根目录build.gradle:
buildscript { ext.kotlin_version = "1.5.31" // 请使用与Realm兼容的Kotlin版本 ext.realm_version = "10.11.0" repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.0.4" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.realm:realm-gradle-plugin:$realm_version" } } allprojects { repositories { google() mavenCentral() } }
App模块build.gradle:
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' // 必须添加这个插件 id 'realm-android' } android { compileSdk 32 defaultConfig { applicationId "com.example.yourapp" minSdk 21 targetSdk 32 versionCode 1 versionName "1.0" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' // 确保Kotlin编译目标与Java版本一致 } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' // Realm相关依赖 implementation "io.realm:realm-android-library:$realm_version" implementation "io.realm:realm-kotlin-extensions:$realm_version" }
3. 清理并重新构建项目
- 先执行清理命令:
./gradlew clean - 然后重新构建:
./gradlew assembleDebug - 如果问题依旧,尝试关闭Android Studio,删除项目根目录下的
.gradle、.idea文件夹和app模块的build文件夹,再重新打开项目同步Gradle。
关于google-services.json的警告
虽然这不是导致构建失败的原因,但可以将google-services.json放在app模块的src/main目录下,或者根据你的flavor配置调整文件位置,消除这些警告信息。
内容的提问来源于stack exchange,提问作者Erik
相关产品推荐
相关产品推荐

