Sublime Text需通过外部构建系统运行Kotlin,前提是系统已安装JDK≥8和Kotlin CLI(kotlinc在PATH中),且终端能执行kotlinc -version;再创建Kotlin.sublime-build配置文件,含编译和Run变体,并确保安装Kotlin语法插件。

Sublime Text 本身不原生支持 Kotlin 编译运行,必须借助外部构建系统(Build System)调用 kotlinc 或 java 命令。核心前提是:你的系统已正确安装 JDK(≥8)和 Kotlin CLI(kotlinc 可执行文件在 PATH 中)。
确认 kotlinc 能在终端直接运行
这是最关键的前置条件。Sublime 的构建系统本质是调起 shell 执行命令,如果终端里都找不到 kotlinc,Sublime 一定失败。
- 在终端输入
kotlinc -version,应输出类似Kotlin version 1.9.20 - 若提示
command not found,说明 Kotlin CLI 没装或没配 PATH —— 不要跳过这步去配 Sublime - Mac/Linux 检查
~/.sdkman/candidates/kotlin/current/bin或/usr/local/bin;Windows 检查是否把kotlinc/bin加入了系统环境变量
创建 Sublime 的 Kotlin 构建系统(.sublime-build)
Sublime 通过 JSON 格式的构建定义来调用编译器。你需要手动新建一个构建配置,指向 kotlinc 并处理源码路径、输出目录和运行逻辑。
- 菜单栏 → Tools → Build System → New Build System…
- 替换全部内容为以下 JSON(注意
file_regex用于高亮错误行,variants提供“编译+运行”快捷方式):
{
"cmd": ["kotlinc", "$file", "-include-runtime", "-d", "${file_path}/${file_base_name}.jar"],
"file_regex": "^(.*):([0-9]+):([0-9]+):.*$",
"working_dir": "$file_path",
"selector": "source.kotlin",
"variants":
[
{
"name": "Run",
"cmd": ["java", "-jar", "${file_path}/${file_base_name}.jar"]
}
]
}
- 保存为
Kotlin.sublime-build(自动存到Packages/User/) -
"selector": "source.kotlin"要求你已安装 Kotlin 语法高亮插件(如SublimeKotlin),否则构建菜单不会自动激活
为什么不能直接用 kotlinc $file 然后 java -cp …?
因为 Kotlin 编译出的 .class 文件依赖 kotlin-stdlib.jar,而 kotlinc -include-runtime 会把标准库打包进生成的 .jar,这样后续用 java -jar 就能直接运行,不用手动管理 classpath。
- 如果只用
kotlinc $file -d out/,生成的是裸.class,运行时得写java -cp "out/:$KOTLIN_HOME/lib/kotlin-stdlib.jar" MainKt—— 路径难写、跨平台易错 -
-include-runtime是最简方案,适合单文件小项目;多文件或模块化项目建议用 Gradle,别硬撑 Sublime 构建 - 注意:
main函数必须写在顶层(非 class 内),且文件名需与函数名一致(如Main.kt含fun main()),否则java -jar找不到入口
常见报错及对应原因
构建失败时,Sublime 底部面板会显示命令输出。多数问题其实不是 Sublime 配置错,而是 Kotlin 工具链本身没就绪。
-
/bin/sh: kotlinc: command not found→kotlinc不在 PATH,重装 Kotlin CLI 或修正环境变量 -
error: unresolved reference: println→ 没加-include-runtime,或kotlinc版本太老(低于 1.2) - 构建成功但运行报
NoClassDefFoundError: kotlin/jvm/internal/Intrinsics→ 运行时没带标准库,确认用了-include-runtime和java -jar - 中文路径下编译失败 → Kotlin CLI 对非 UTF-8 路径兼容差,把项目移到纯英文路径再试
真正卡住的地方往往不在 Sublime 配置本身,而在 kotlinc 是否可用、是否带 runtime、以及 main 函数是否符合 JVM 入口规范 —— 这些比改 JSON 更值得花时间验证。










