能跑起来的前提是jdk和kotlinc都必须在vscode中可见——缺一不可;需显式配置java.home、java.configuration.runtimes和kotlin.executable.path三个绝对路径并重启生效,否则报“no sdk configured”。

能跑起来的前提不是装插件,而是 JDK 和 kotlinc 都得在 VSCode 里“看得见”——缺一不可。
为什么装了 Kotlin 插件还报 “No SDK configured”
因为 fwcd.kotlin 或 Red Hat 的 Kotlin 插件只管语法高亮和跳转,不带 JDK,也不找 kotlinc。它依赖 Java 扩展链路识别环境,而这条链路默认是断的。
- 必须在 VSCode 设置(
settings.json)里显式填"java.home",值是 JDK 17+ 的绝对路径,比如/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home,不能写~或$JAVA_HOME - 还得加
"java.configuration.runtimes",否则新建.kt文件连括号匹配都失效 -
kotlin.executable.path必须设为kotlinc可执行文件的绝对路径,例如/opt/homebrew/bin/kotlinc(macOS Homebrew 安装)或C:\kotlinc\bin\kotlinc.bat(Windows 手动解压) - 改完必须重启 VSCode——插件初始化只发生在启动时
单文件运行:用 Code Runner 跑 .kt 或 .kts
适合验证语法、写小工具,但不处理依赖,也不支持断点。
- 安装插件
Code Runner(Jun Han)和Kotlin Language(fwcd 或 Red Hat) - 在
settings.json中配执行命令:"kotlin": "cd $dir && kotlinc -include-runtime -d out.jar $fileName && java -jar out.jar"——漏掉-include-runtime会报NoClassDefFoundError: kotlin/jvm/internal/Intrinsics -
.kt文件必须有顶层fun main();.kts文件可直接写println("hi"),对应命令用kotlinc -script $fileName - 如果用了
kotlinx.coroutines等依赖,Code Runner 直接失败——它不读build.gradle.kts
Gradle 项目运行:这才是标准做法
VSCode 不编译 Kotlin,它靠 Gradle 编译、打包、运行;插件只是帮你识别任务和跳转。
- 项目根目录要有
build.gradle.kts,且包含:plugins { kotlin("jvm") version "1.9.24" }和kotlin { jvmToolchain(17) } -
jvmToolchain(17)不能省——不写就用 Gradle 自带 JDK,极易触发UnsupportedClassVersionError -
application { mainClass.set("com.example.HelloKt") }——注意是HelloKt(文件名 +Kt),不是Hello.kt,否则报Could not find or load main class - 运行统一用终端执行
./gradlew run,或通过侧边栏GRADLE→Tasks→application→run
调试时 launch.json 最容易错配的三个地方
VSCode 的 Kotlin 调试不是解释执行,而是 attach 到 JVM 进程,配置不对就卡在“正在启动…”。
-
"type": "java"是必须的,不是shell或kotlin -
"mainClass"值必须和build.gradle.kts里mainClass.set(...)完全一致,包括包名和末尾的Kt - 别手动填
classpath或projectName——这些由 Gradle 自动注入;推荐方式是用./gradlew run --debug-jvm启动,再用launch.json的attach模式连接
最常被忽略的是:JDK 路径在系统、终端、VSCode 三处必须完全一致;kotlinc 版本要和 build.gradle.kts 里的 Kotlin 插件版本对齐;src/main/kotlin 目录结构放错位置,整个项目就“隐身”了。











