Kotlin项目中Java类调用Kotlin函数报错排查
解决Java调用Kotlin函数找不到
MyKotlinKt的问题 核心排查与修复步骤
1. 确认自定义Convention插件的Kotlin配置
你的build.gradle.kts使用了com.example.kotlin-library-conventions自定义插件,必须确保该插件内部已正确配置Kotlin JVM环境:
// 自定义convention插件的示例配置(需确保已实现) plugins { id("org.jetbrains.kotlin.jvm") } // 配置Java编译依赖Kotlin编译产物,保证顺序正确 tasks.withType<JavaCompile> { dependsOn(tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>()) } kotlin { jvmToolchain(17) // 替换为项目使用的JDK版本 }
2. 检查源文件目录结构
确保Java和Kotlin文件符合标准源集目录结构:
src/main/kotlin/com/example/MyKotlin.kt src/main/java/com/example/Runner.java
若目录结构非标准,需在build.gradle.kts中显式配置源集:
sourceSets { main { kotlin.srcDirs("src/main/kotlin") java.srcDirs("src/main/java") } }
3. 验证Kotlin编译产物
执行命令./gradlew compileKotlin,检查build/classes/kotlin/main/com/example/目录下是否生成MyKotlinKt.class文件。若未生成,说明Kotlin编译环节存在问题,需重点排查自定义插件的配置完整性。
4. 临时直接添加Kotlin配置(快速验证)
若自定义插件排查困难,可临时在当前模块build.gradle.kts中直接添加Kotlin配置,验证问题是否解决:
plugins { id("com.example.kotlin-library-conventions") id("org.jetbrains.kotlin.jvm") version "你的Kotlin版本" } tasks.compileJava { dependsOn(tasks.compileKotlin) classpath += files(tasks.compileKotlin.get().destinationDirectory) }
补充说明
- Kotlin顶层函数编译后会生成
[文件名]Kt格式的类,你的MyKotlin.kt中add函数对应MyKotlinKt.add的调用写法本身是正确的。 - 需确保项目中Kotlin版本与Gradle插件版本兼容,避免版本不匹配引发编译异常。
内容的提问来源于stack exchange,提问作者Afshin
相关产品推荐
相关产品推荐

