Sublime Text 无法直接运行 Kotlin 代码,必须手动配置 JDK 11+、Kotlin CLI 编译器,并通过 Build System 调用 kotlinc 和 java 命令;main 函数须为顶层函数,路径须英文,命令中引号不可省略。
和
命令必须在终端中能直接执行,否则 Sublime 的 Build System 一定静默失败或报
——这不是配置问题,是环境没铺平。
验证
和
是否真正可用
Sublime 启动时只读取一次环境变量,改完 PATH 不重启就永远找不到命令。
打开终端(macOS/Linux 用 Terminal,Windows 用 CMD,
不是 PowerShell
),运行:
和
两者都必须输出类似
;只有一方有输出,说明你只有编译器或只有运行时
Android Studio 自带的 Kotlin 工具通常不加入 PATH,不能直接用;推荐从
Kotlin 官网下载 CLI zip 包
,解压后把
加入系统 PATH
Windows 用户加完 PATH 后,
必须重启 Sublime
;macOS/Linux 用户若用 zsh,确认路径已写入
并执行过
安装 LanguageKotlin 插件启用语法高亮
别装名字含 “JetBrains”、“SublimeKotlin” 或 “Deprecated” 的老插件——它们对 Kotlin 1.8+ 的
解构、
等新语法识别错误。
按
(Windows/Linux)或
(macOS),输入
搜索并安装
(作者是 JetBrains,对应
子模块)
新建文件保存为
,右下角状态栏应显示
;若没触发,点它 →
文件默认不被识别,需单独设置:打开任意
→ 点右下角语言名 →
写一个真正能编译 + 运行的
网上流传的 JSON 常把编译和运行塞进同一个
数组,用
连接——这在 Windows 上极易因空格、引号或 shell 类型失效。
菜单 →
粘贴以下内容(macOS/Linux):
Windows 用户请改用:
不可省略:不加会导致
遇到空格会崩,所有路径参数务必用双引号包裹(如
)
设为
很关键,否则
可能找不到依赖或输出错乱
为什么
总不执行或报错
错误常不在 Build System,而在 Kotlin 代码本身是否满足 JVM 启动契约。
必须是顶层函数(不能在
或
内部定义)
签名必须匹配:Kotlin 1.7+ 支持无参
,但旧版本需显式写
如果用了
,编译生成的主类名是
,但
模式下无需手动指定,只要
在顶层即可
文件名无所谓(
或
都行),但类名永远是
,不是
确保项目路径不含中文或空格——尤其 Windows 下,
这类路径大概率让
崩溃
最常被忽略的是:Sublime 启动后不会自动感知 PATH 变更,也不解析 Gradle 多平台 DSL,更不校验
是否在正确源集里。它只是个调命令的壳子——命令能跑通,它就能跑;命令卡住,它就静默失败。
kotlinckotlin'kotlinc' is not recognizedkotlinckotlinkotlinc -versionkotlin -versionKotlin Compiler 1.9.24bin/~/.zshrcsource ~/.zshrcvalsealed interfaceCtrl+Shift+PCmd+Shift+PPackage Control: Install PackageLanguageKotlinintellij-communityhello.ktKotlinOpen all with current extension as → Kotlin.ktsbuild.gradle.ktsOpen all with current extension as → KotlinKotlin.sublime-buildcmd&&Tools → Build System → New Build System…{
"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"
}{
"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-runtimeNoClassDefFoundError: kotlin/jvm/internal/Intrinsics$file_base_name"$file"working_dir$file_pathkotlincfun main()fun main()classpackagefun main()fun main(args: Array) package com.examplecom.example.HelloKt-include-runtime + java -jarfun main()Hello.ktapp.ktxxxKtxxxC:\Users\张三\codekotlincfun main()