Sublime Text 无法直接运行 Kotlin 代码,必须手动配置 JDK 11+、Kotlin CLI 编译器,并通过 Build System 调用 kotlinc 和 java 命令;main 函数须为顶层函数,路径须英文,命令中引号不可省略。

kotlinc 和 kotlin 命令必须在终端中能直接执行,否则 Sublime 的 Build System 一定静默失败或报 'kotlinc' is not recognized——这不是配置问题,是环境没铺平。
验证 kotlinc 和 kotlin 是否真正可用
Sublime 启动时只读取一次环境变量,改完 PATH 不重启就永远找不到命令。
- 打开终端(macOS/Linux 用 Terminal,Windows 用 CMD,不是 PowerShell),运行:
kotlinc -version和kotlin -version - 两者都必须输出类似
Kotlin Compiler 1.9.24;只有一方有输出,说明你只有编译器或只有运行时 - Android Studio 自带的 Kotlin 工具通常不加入 PATH,不能直接用;推荐从 Kotlin 官网下载 CLI zip 包,解压后把
bin/加入系统 PATH - Windows 用户加完 PATH 后,必须重启 Sublime;macOS/Linux 用户若用 zsh,确认路径已写入
~/.zshrc并执行过source ~/.zshrc
安装 LanguageKotlin 插件启用语法高亮
别装名字含 “JetBrains”、“SublimeKotlin” 或 “Deprecated” 的老插件——它们对 Kotlin 1.8+ 的 val 解构、sealed interface 等新语法识别错误。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Package Control: Install Package - 搜索并安装
LanguageKotlin(作者是 JetBrains,对应intellij-community子模块) - 新建文件保存为
hello.kt,右下角状态栏应显示Kotlin;若没触发,点它 →Open all with current extension as → Kotlin -
.kts文件默认不被识别,需单独设置:打开任意build.gradle.kts→ 点右下角语言名 →Open all with current extension as → Kotlin
写一个真正能编译 + 运行的 Kotlin.sublime-build
网上流传的 JSON 常把编译和运行塞进同一个 cmd 数组,用 && 连接——这在 Windows 上极易因空格、引号或 shell 类型失效。
- 菜单 →
Tools → Build System → New Build System… - 粘贴以下内容(macOS/Linux):
{ "shell_cmd": "kotlinc \"$file\" -include-runtime -d \"${file_path}/${file_base_name}.jar\" && java -jar \"${file_path}/${file_base_name}.jar\"", "file_regex": "^(.*?):([0-9]+):([0-9]+):", "selector": "source.kotlin", "working_dir": "$file_path" } - Windows 用户请改用:
{ "cmd": ["kotlinc.bat", "$file", "-include-runtime", "-d", "${file_path}/${file_base_name}.jar"], "shell": true, "selector": "source.kotlin", "variants": [ { "name": "Run", "cmd": ["java", "-jar", "${file_path}/${file_base_name}.jar"] } ] } -
-include-runtime不可省略:不加会导致NoClassDefFoundError: kotlin/jvm/internal/Intrinsics -
$file_base_name遇到空格会崩,所有路径参数务必用双引号包裹(如"$file") -
working_dir设为$file_path很关键,否则kotlinc可能找不到依赖或输出错乱
为什么 fun main() 总不执行或报错
错误常不在 Build System,而在 Kotlin 代码本身是否满足 JVM 启动契约。
-
fun main()必须是顶层函数(不能在class或package内部定义) - 签名必须匹配:Kotlin 1.7+ 支持无参
fun main(),但旧版本需显式写fun main(args: Array<string>)</string> - 如果用了
package com.example,编译生成的主类名是com.example.HelloKt,但-include-runtime + java -jar模式下无需手动指定,只要fun main()在顶层即可 - 文件名无所谓(
Hello.kt或app.kt都行),但类名永远是xxxKt,不是xxx - 确保项目路径不含中文或空格——尤其 Windows 下,
C:\Users\张三\code这类路径大概率让kotlinc崩溃
fun main() 是否在正确源集里。它只是个调命令的壳子——命令能跑通,它就能跑;命令卡住,它就静默失败。

















