必须装fwcd.kotlin插件实现kotlin语法高亮、跳转和诊断,它集成kotlin language server,开箱即用且不依赖jdk;其他intellij系插件无效且可能冲突。

fwcd.kotlin 插件必须装,其他 Kotlin 相关插件基本无效
语法高亮、跳转定义、错误诊断这些基础能力,只靠 fwcd.kotlin 就能开箱即用,不依赖 JDK 或构建工具。它背后集成的是 Kotlin Language Server(KLS),是目前 VSCode 上最稳定、更新最勤的实现。
别装名字带 “IntelliJ”“JetBrains” 的插件——比如 intellij-idea-kotlin,它们根本不是为 VSCode 设计的,不仅没功能,还可能干扰 fwcd.kotlin 的语言服务启动。
装完插件后如果没反应,注意两点:
- 关掉所有已打开的
.kt文件,再重新打开,插件不会热注入到已有编辑器实例 - 右下角状态栏点语言模式(显示 “Plain Text” 或 “Kotlin”),手动选成
Kotlin,否则文件关联失败,高亮和补全全失效
Code Runner 适合单文件快速验证,但命令必须带 -include-runtime
Code Runner(作者 junhan.chen)是唯一能让你右键“Run Code”就看到 println 输出的方案,但它只适用于无包、无依赖、顶层 fun main() 的脚本场景。
默认配置不工作,必须手动改 settings.json:
"code-runner.executorMap": {
"kotlin": "cd $dir && kotlinc -include-runtime -d out.jar $fileName && java -jar out.jar"
}
漏掉 -include-runtime 会直接报 NoClassDefFoundError: kotlin/jvm/internal/Intrinsics——因为编译出的 jar 不含 Kotlin 标准库。
还要注意:
-
fun main()必须是顶层函数,不能写在class里;编译后主类名是FileNameKt,不是FileName - 含
package com.example或引用kotlinx.coroutines的文件,此方式必然失败 -
kotlinc命令必须在系统PATH中(如 macOS 用brew install kotlin)
Gradle 项目必须有 build.gradle.kts,且 jvmToolchain(17) 不能省
VSCode 对 Kotlin 的项目级支持完全靠 Gradle 驱动。没有 build.gradle.kts,插件连 src/main/kotlin 是源码根目录都识别不了,一直提示 No SDK configured。
新建项目别手写配置,终端执行:
gradle init --type kotlin-application
生成的 build.gradle.kts 至少要包含:
plugins { kotlin("jvm") version "1.9.24" }
kotlin { jvmToolchain(17) }
jvmToolchain(17) 是关键:不写就默认用 Gradle 自带的 JDK,极易触发 UnsupportedClassVersionError。Android 开发还额外要求 JAVA_HOME 和 VSCode 设置里的 java.home 指向同一 JDK 17 路径,否则 Gradle 同步失败。
运行统一走:
./gradlew run
而不是点右上角 ▶️ 按钮——那个按钮只对 Java 扩展识别的简单任务有效,Kotlin 项目必须靠 Gradle Task 视图触发。
调试必须用 launch.json + ./gradlew run 组合,不能直接 attach 单文件
VSCode 的 Kotlin 调试本质是 attach 到一个已启动的 JVM 进程,不是解释执行 .kt 文件。照搬 Java 的 launch.json 配置大概率断点不命中。
推荐做法是:先配好 Gradle 项目的 application { mainClass.set("com.example.AppKt") }(注意后缀 Kt),然后在 launch.json 中设:
{
"type": "java",
"name": "Debug Gradle Run",
"request": "launch",
"mainClass": "com.example.AppKt",
"projectName": "my-kotlin-project",
"preLaunchTask": "gradle run"
}
其中 preLaunchTask 必须指向一个能启动 JDWP 的 Gradle 任务(比如自定义 task 启用 --debug-jvm),否则 debugger 找不到可连接的 JVM。
容易被忽略的一点:fwcd.kotlin 插件本身不提供调试能力,它只负责语言服务;真正跑起来和断点,全靠 Java 扩展包 + Gradle 构建结果 + 正确的 JVM 启动参数对齐。三者稍有错位,F5 就只是卡住或报 “Could not find or load main class”。











