Sublime Text 无法直接编译运行 Kotlin,需通过外部工具链(kotlinc 或 Gradle)配合自定义 Build System 实现;前提是正确安装匹配版本的 JDK(≥17)和 Kotlin 编译器(如 1.9+),并配置好 PATH,且 Build System 中必须使用 -include-runtime 参数生成含标准库的 jar 包。

Sublime Text 本身不支持 Kotlin 编译运行,它只是个编辑器,没有内置构建系统或 JVM 环境管理能力。想在 Sublime 里“跑 Kotlin”,本质是用外部工具链(kotlinc 或 gradle)配合 Sublime 的 build system 功能来调用——这可行,但容易卡在路径、JDK 版本、类路径这些地方。
确认本地已装好 Kotlin 编译器和 JDK
很多人卡在这步却以为是 Sublime 配置问题。Kotlin 不像 Python 那样自带解释器,kotlinc 必须显式安装,且依赖匹配的 JDK(Kotlin 1.9+ 推荐 JDK 17+)。
- 终端运行
kotlinc -version,必须输出类似Kotlin version 1.9.24;如果报 command not found,说明没装 Kotlin 或没加进$PATH - 运行
java -version,确认输出是 JDK(不是 JRE),且版本 ≥17(低版本可能编译通过但运行时报Unsupported class file major version) - Mac/Linux 检查
which kotlinc和which java,Windows 检查系统环境变量PATH是否包含kotlinc的bin目录和 JDK 的bin目录
写一个能工作的 Sublime Build System
Sublime 的 build system 是 JSON 格式,核心是告诉它:用什么命令、在哪个目录下、传哪些参数去编译和运行。默认的 JavaC 或 ShellScript 都不能直接用。
- 新建文件 →
Tools→Build System→New Build System…,粘贴以下内容(注意替换kotlinc路径):
{
"shell_cmd": "kotlinc $file -include-runtime -d ${file_base_name}.jar && java -jar ${file_base_name}.jar",
"file_regex": "^(.*):([0-9]+):([0-9]+): (.*)$",
"selector": "source.kotlin",
"working_dir": "$file_path"
}
-
kotlinc $file -include-runtime -d …:必须加-include-runtime,否则生成的 jar 缺少 Kotlin 运行时,运行时报NoClassDefFoundError: kotlin/jvm/internal/Intrinsics -
working_dir设为$file_path很关键,否则kotlinc可能找不到依赖或输出路径错乱 - Windows 用户要把
&&改成&(cmd)或&&(PowerShell),并确保kotlinc在 PATH 中——别硬写绝对路径,容易因空格或反斜杠出错
运行时常见错误和对应解法
即使 build system 写对了,也常因代码结构或环境细节失败。错误信息往往藏在 Sublime 底部面板里,得点开看全。
-
error: unresolved reference: println:不是语法错,是kotlinc没找到标准库。检查是否用了-include-runtime,或手动加-classpath $KOTLIN_HOME/lib/kotlin-stdlib.jar -
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics:典型漏了-include-runtime,或者用了kotlinc-jvm但没配对的 stdlib - 输出 jar 后运行报
Could not find or load main class:Kotlin 文件里没写fun main(),或写了但不在顶层(比如包声明后缩进错了),或文件名和main所在类名不一致(Kotlin 不强制要求同名,但kotlinc -include-runtime默认只打包当前文件,无主类就运行失败)
真正麻烦的从来不是配置那几行 JSON,而是 JDK/Kotlin 版本混用、PATH 在 GUI 环境(如 macOS 的 Sublime 从 Finder 启动)里读不到 shell 配置、以及 Kotlin 编译产物依赖运行时却忘了打包——这些不会报“配置错误”,只会静默失败或抛奇怪异常。










