Sublime配置Kotlin脚本运行环境_Sublime编写Kotlin程序设置

冬晨小哥_5135

冬晨小哥_5135

2026-04-27

590人浏览

原创

sublime text 不支持直接运行 kotlin 脚本(.kts),需通过 build system 调用官方 kotlin 命令(非 kotlinc),并确保路径无空格、jvm 指定 -j-dfile.encoding=utf-8、脚本使用顶层表达式而非 fun main(),且须区分 .kts 与 .kt 的独立构建配置。

sublime配置kotlin脚本运行环境_sublime编写kotlin程序设置

Sublime Text 本身不支持直接运行 Kotlin 脚本(.kts),必须靠外部 kotlinc-jvm 或 kotlin 命令配合 Build System 实现;但要注意:新版 Kotlin(≥1.9)已弃用 kotlinc 的脚本模式,kotlin 命令才是专为 .kts 设计的解释器——很多人卡在用错命令上。

确认系统已装对命令:kotlin 而非 kotlinc

很多人误以为 kotlinc 能跑 .kts 文件,其实它只编译 .kt。真正用于脚本的是独立的 kotlin 可执行文件(随 Kotlin CLI 一起安装,不是别名或软链):

  • 终端执行 kotlin -version,必须有输出(如 Kotlin version 1.9.24);若报 command not found,说明没装完整版 Kotlin CLI,或 PATH 没包含其 bin/ 目录
  • kotlinc -version 和 kotlin -version 应该都可用,但用途不同:kotlinc 编译 .kt → .jar,kotlin 直接执行 .kts
  • Homebrew 安装的 kotlin(brew install kotlin)常缺 kotlin 命令,只带 kotlinc;推荐从 GitHub Releases 下载官方 ZIP 包并手动配置 PATH

Build System 必须用 shell_cmd 调 kotlin,且路径不能含空格或中文

Sublime 默认调用 CMD(Windows)或 sh(macOS/Linux),而 kotlin 脚本对路径敏感,尤其 Windows 下空格和中文会直接中断执行:

可灵AI
可灵AI

可灵AI是一款由快手推出的 AI 图像与视频生成平台。

下载
  • 把 .kts 文件放在纯英文、无空格路径下,例如 D:kthello.kts 或 ~/dev/kt/hello.kts
  • Build System 配置中必须用 shell_cmd(不是 cmd),否则 &&、引号等 shell 特性不生效
  • Windows 用户若用 PowerShell,需显式加 pwsh -c 前缀;更稳妥做法是改用 cmd /c 并确保双引号包裹路径:"shell_cmd": "cmd /c "kotlin \"$file\"""
  • macOS/Linux 用户注意 shell 类型,Sublime 默认用 sh,某些 kotlin 脚本依赖 bash 特性,可改写为 bash -c "kotlin '$file'"

.kts 文件里不能写 fun main(),得用顶层表达式或 @file:JvmName

Kotlin 脚本(.kts)不是普通 Kotlin 源码,它默认执行文件内顶层代码,不走 main 入口。强行写 fun main() 不报错但不会执行:

  • 正确写法是直接写可执行语句,比如:println("Hello from .kts!")
  • 如果想复用 .kt 里的 main 函数逻辑,可以用 @file:JvmName("ScriptMain") + fun main(),但必须配合 -J-Dkotlin.scripting.enableExperimental=true 启动参数,且 Sublime Build System 中要显式加上
  • 常见错误现象:Build 成功但无输出——大概率是写了 fun main() 却没触发,或脚本里用了未声明的变量(.kts 不自动导入 kotlin.io.* 等)

编码与 JVM 参数容易被忽略,尤其中文输出乱码

即使 kotlin 命令能跑通,中文字符串打印成 ??? 或抛 java.nio.charset.MalformedInputException 是高频问题,根源在 JVM 默认编码不是 UTF-8:

  • Windows CMD 默认编码是 GBK,kotlin 进程会继承它,导致读取 UTF-8 编码的 .kts 文件失败
  • 解决方法是在 Build System 的 shell_cmd 中显式指定 JVM 参数:kotlin -J-Dfile.encoding=UTF-8 "$file"
  • macOS/Linux 用户若用 zsh/bash,还需确认终端 locale 输出含 UTF-8,否则 kotlin 可能仍按 locale 解码源文件
  • 额外提示:不要在 Build System 里混用 kotlinc 和 kotlin 命令逻辑,比如先 kotlinc -script 再 java,新版已不支持 -script 参数

最易被忽略的其实是 .kts 和 .kt 的根本差异:前者是脚本,后者是编译单元;Sublime 里一个 Build System 无法同时正确处理两者,必须分开建两个文件(KotlinScript.sublime-build 和 Kotlin.sublime-build),且 selector 分别设为 source.kotlin.script 和 source.kotlin——插件识别不准时,连语法高亮都会错位。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

sublime

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Kotlin协程编程与Spring Boot集成实践
Kotlin协程编程与Spring Boot集成实践

本专题围绕 Kotlin 协程机制展开,深入讲解挂起函数、协程作用域、结构化并发与异常处理机制,并结合 Spring Boot 展示协程在后端开发中的实际应用。内容涵盖异步接口设计、数据库调用优化、线程资源管理以及性能调优策略,帮助开发者构建更加简洁高效的 Kotlin 后端服务架构。

2026.02.12

351

18

Java Kotlin协程与异步编程实战
Java Kotlin协程与异步编程实战

本专题围绕 Kotlin 协程与异步编程展开,讲解挂起函数、协程作用域、异步任务调度及并发控制方法。通过实际项目案例,帮助开发者提升后端服务性能,实现高效异步任务处理与稳定性保障。

2026.04.13

159

16

Kotlin Android开发教程大全
Kotlin Android开发教程大全

系统讲解 Google 官方推荐的 Android 开发首选语言 Kotlin 的核心知识与工程实践,涵盖 Kotlin 简洁语法(空安全/数据类/扩展函数/解构声明/作用域函数)与 Java 互操作、集合操作与函数式编程、协程(Coroutines)异步编程(suspend/launch/async/Flow)、Jetpack Compose 声明式 UI 开发(状态管理/组合函数/导航/动画)、MVVM / MVI 架构设计与 Vi

2026.06.03

248

19

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

20

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

20

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

20

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

0

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

20

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程