Sublime Text 不能直接编译运行 Kotlin,需通过 Build System 调用外部 kotlinc 和 java 命令;关键在于正确配置 PATH、使用 shell_cmd、添加 -include-runtime,并确保 fun main() 签名匹配 Kotlin 版本。

Sublime Text 能不能直接编译运行 Kotlin
不能。Sublime Text 本身只是一个文本编辑器,没有内置的 Kotlin 编译器或 JVM 运行时支持,kotlinc 和 java 都得靠外部命令调用。你看到的“一键运行”效果,本质是用 Sublime 的 Build System 把终端命令封装起来了。
常见错误现象:Error: Unable to access jarfile kotlinc 或 command not found: kotlinc——根本原因是系统 PATH 没配好,或者 Build System 写死了错误路径。
- 确认
kotlinc已安装且能从终端直接调用(运行kotlinc -version应有输出) - Windows 用户注意:PowerShell / CMD 环境变量和 Sublime 启动方式有关,建议从命令行启动 Sublime(如
subl .),避免 PATH 继承不全 - macOS / Linux 用户若用 zsh,确保
kotlinc路径写在~/.zshrc里,并已执行source ~/.zshrc
怎么写一个可用的 Kotlin Build System
Sublime 的构建系统本质是 JSON 配置,告诉它「用什么命令、传什么参数、在哪执行」。关键不是语法多漂亮,而是路径和 shell 行为要对得上。
使用场景:单文件快速验证(如 Hello.kt),不涉及 Gradle 项目结构。
- 保存为
~/Library/Application Support/Sublime Text/Packages/User/Kotlin.sublime-build(macOS)或对应 Windows/Linux 路径 - 内容必须用
shell_cmd(不是cmd),否则无法展开$file等变量 - 推荐写法(兼容 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" } - Windows 用户需改用
cmd且转义双引号:shell_cmd": "kotlinc \"${file}\" -include-runtime -d \"${file_path}/${file_base_name}.jar\" && java -jar \"${file_path}/${file_base_name}.jar\""
为什么 Kotlin Build System 容易报错“no main function”
因为 kotlinc 编译时默认不生成可执行入口,除非代码里明确定义了 fun main(),且不能带参数(或显式声明 Array<string></string>)。
常见错误现象:编译成功但运行时报 Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics——这是没加 -include-runtime;或者 Could not find or load main class——主函数签名不对或类名推导失败。
- 必须写
fun main() { println("OK") },不能写成fun main(args: Array<String>) { ... }(旧版 Kotlin 允许,新版本默认要求无参形式) - 如果用了
fun main(args: Array<String>),需确保 Kotlin 编译器版本 ≥ 1.6.20,且 Build System 中加-jvm-target 11等兼容选项 -
-include-runtime必须加,否则生成的 jar 缺少 Kotlin 标准库,java -jar会找不到kotlin.*类
Sublime + Kotlin 适合什么场景,不适合什么
适合临时写算法题、验证语法、教学演示这类轻量、单文件、无需依赖管理的场景。不适合真实项目开发——没有代码补全、跳转定义、重构、Gradle 集成、测试运行等能力。
性能影响不大,但每次保存都要重新编译整个文件,没法做增量编译;兼容性取决于本地 kotlinc 版本,不同版本对 main 函数签名、JVM 目标版本的要求可能变化。
- 别指望它替代 IntelliJ IDEA,尤其当你需要调试、Maven/Gradle 依赖、Kotlin DSL、协程调试时
- 如果只是想快速跑一段 Kotlin,又不想开 IDE,那这个 Build System 是够用的,但务必确保
kotlinc在 PATH 里,且主函数写法匹配当前 Kotlin 版本 - 容易被忽略的一点:Sublime 不监听
.jar输出目录变更,删了 jar 文件后再次构建不会自动清理旧产物,可能误运行历史版本

















