Gradle中配置Kotlin与Java混合编译项目需启用Kotlin插件、显式声明源码路径、对齐JVM目标版本及标准库依赖;三者协同可实现双向调用且避免“找不到类”等错误。

Gradle 中配置 Kotlin 与 Java 混合编译项目,核心在于插件启用、源码路径声明和编译选项对齐。只要三者协同,Java 和 Kotlin 就能互相调用、统一构建,不会出现“找不到类”或“符号不存在”这类典型错误。
启用 Kotlin 插件并替换旧式 buildscript 声明
Gradle 7.0+ 推荐使用 plugins {} 块替代 buildscript 中的手动 classpath 引入,避免插件变体解析失败:
- 在项目根目录的
build.gradle(或build.gradle.kts)中,删除buildscript.dependencies里的kotlin-gradle-plugin行 - 在模块级
build.gradle顶部添加:plugins {<br> id 'org.jetbrains.kotlin.android' version '1.9.20' apply true'<br>} - 若使用 Kotlin DSL(
.kts),写法更简洁:plugins {<br> kotlin("android") version "1.9.20"<br>}
显式声明 Java 和 Kotlin 源码目录
即使默认路径匹配,也建议显式配置 sourceSets,防止 IDE 或 CI 环境识别偏差:
- 在模块
build.gradle的android {}块内添加: sourceSets {<br> main {<br> java.srcDirs = ["src/main/java"]<br> kotlin.srcDirs = ["src/main/kotlin"]<br> }<br>}- 如需共用同一目录(例如都放在
src/main/java下),可合并路径:java.srcDirs = ["src/main/java", "src/main/kotlin"],但不推荐——易混淆且不利于代码规范
统一 JVM 目标版本与标准库依赖
Kotlin 编译结果需与 Java 字节码兼容,否则运行时可能报 IncompatibleClassChangeError:
- 在
android {}或kotlinOptions {}中指定:kotlinOptions {<br> jvmTarget = "11"<br>} - 确保 Java 编译选项同步:
compileOptions {<br> sourceCompatibility JavaVersion.VERSION_11<br> targetCompatibility JavaVersion.VERSION_11<br>} - 添加 Kotlin 标准库依赖(与 Kotlin 插件版本一致):
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk11:1.9.20"
验证混合调用是否生效
配置完成后,关键要验证双向互调是否真正可用:
- 在
src/main/java中新建一个 Java 类,调用src/main/kotlin里定义的 Kotlin 函数(注意顶层函数需加@JvmStatic或通过伴生对象暴露) - 在
src/main/kotlin中调用 Java 类的 public 方法或字段(Kotlin 默认支持,无需额外注解) - 执行
./gradlew assembleDebug,无编译错误即表示路径与插件协同正常
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











