Android编译报错:compileJava与compileKotlin的JVM目标版本不一致
解决方案
1. 统一模块级编译版本配置
问题核心是info模块中Java与Kotlin的编译目标JVM版本不匹配,直接修改模块的build.gradle(或build.gradle.kts)脚本即可解决:
若为Android应用/库模块:
在android代码块中添加以下配置,将版本统一为17(也可根据需求改为其他一致版本,比如11):
android { // 保留原有其他配置... compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } }
若为纯Kotlin模块:
在脚本中添加以下配置:
plugins { id 'org.jetbrains.kotlin.jvm' // 保留原有其他插件... } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { jvmToolchain(17) }
2. 全局统一配置(可选,避免重复设置)
如果项目包含多个模块,可在根目录build.gradle中添加全局配置,确保所有模块编译版本一致:
subprojects { afterEvaluate { project -> // 处理Android模块 if (project.plugins.hasPlugin('com.android.application') || project.plugins.hasPlugin('com.android.library')) { android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } } } // 处理纯Kotlin模块 else if (project.plugins.hasPlugin('org.jetbrains.kotlin.jvm')) { java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlin { jvmToolchain(17) } } } }
3. 同步并清理缓存
- 点击Android Studio右上角的Sync Project with Gradle Files按钮,同步配置
- 执行命令清理编译缓存:
# Mac/Linux ./gradlew clean build # Windows gradlew.bat clean build
4. 再次确认Gradle JDK配置
打开File > Project Structure > SDK Location,检查Gradle JDK是否选择了与编译版本一致的JDK(比如JDK 17),避免JDK版本与编译目标版本不匹配。
内容的提问来源于stack exchange,提问作者Ethan K
相关产品推荐
相关产品推荐

