根本原因是Gradle未将Main.kt编译进classpath,因其未被识别为源文件;常见于目录错误(应放src/main/kotlin)、Kotlin插件未启用、运行配置主类填写错误(需填MainKt或带包名的com.example.MainKt)、build目录残留旧产物,或多模块中运行配置未指向含Main.kt的模块。

Gradle Kotlin项目里找不到MainKt类
根本原因不是代码写错了,而是 Gradle 没把 Main.kt 编译进 classpath —— 它压根没被识别为源文件。最常见的情况是:你把 Main.kt 放在了错误的目录下,比如 src/main/java 或 src/main/resources 里,而 Kotlin 源码**必须**放在 src/main/kotlin(或显式配置的 Kotlin 源集路径)中。
-
src/main/kotlin是 Kotlin 插件默认扫描的路径;放错位置会导致kotlinCompile任务跳过该文件 - 如果用了自定义源集(比如
src/mycode/kotlin),必须在build.gradle.kts里显式声明:sourceSets.main.kotlin.srcDirs("src/mycode/kotlin") - 检查是否误删了
apply(plugin = "org.jetbrains.kotlin.jvm")—— 没这个插件,Kotlin 文件就只是普通文本
运行配置里选错了主类
即使 Main.kt 编译成功了,IDE 运行配置也可能指向一个不存在的类名。Kotlin 的顶层函数会编译成 MainKt(文件名首字母大写 + Kt 后缀),但 IDE 有时会错误地尝试运行 Main 或 MainKt.class(带后缀)。
- 在 Run Configuration 中,Main class 栏务必填
MainKt(不带.class,也不用加包名前缀,除非有package声明) - 如果有
package com.example,则 Main class 应填com.example.MainKt - 别依赖 IDE 自动推导 —— 手动点「Search by name」并确认选中的是
MainKt,不是Main或其他同名类
构建产物没更新导致类缺失
改完路径或配置后直接点 Run,容易遇到“还是找不到 MainKt”—— 因为旧的 build/ 目录里残留着上一次失败的输出,Gradle 可能跳过重新编译。
- 执行
./gradlew clean compileKotlin,观察输出里是否有Compiling Kotlin sources和对应文件路径 - 检查
build/classes/kotlin/main/下是否存在MainKt.class(注意是.class文件,不是.kt) - Android Studio 中点击
Build → Clean Project,再Build → Rebuild Project,比单纯 Sync 更彻底
多模块项目里主类不在当前模块
如果你的 Main.kt 在 app 模块,但当前运行配置绑定了 library 模块,那自然找不到 —— Gradle 不会跨模块自动合并 classpath。
- 确认运行配置的
Use classpath of module选项指向的是包含Main.kt的那个模块(如app) - 如果主类在独立的
cli模块,需确保该模块的build.gradle.kts里有jvm { toolchain(17) }和application { mainClass.set("CliKt") } - 不要在
settings.gradle.kts里遗漏include("cli"),否则模块根本不会参与构建
MainKt”,先盯住这三处:路径对不对、运行配置填得准不准、build 目录清没清。


















