基于Sublime Text与Scala-cli的轻量级脚本快速开发与本地验证

雨杰酱_1882

雨杰酱_1882

2026-08-06

314人浏览

原创

sublime text 报“command not found”是因为其构建系统不继承 shell 的 path 环境变量,即使终端中 scala-cli 可正常运行;解决方法是用 which scala-cli 获取绝对路径,并在自定义 build system 中显式调用该路径。

基于sublime text与scala-cli的轻量级脚本快速开发与本地验证

为什么 scala-cli 在 Sublime Text 里直接运行会报 “command not found”

因为 Sublime Text 默认不读取你的 shell 环境变量(比如 $PATH),即使你在终端里能正常执行 scala-cli,Sublime 的构建系统也找不到它。

解决办法是显式指定可执行路径,而不是依赖环境变量:

  • 先在终端运行 which scala-cli,得到类似 /usr/local/bin/scala-cli 或 /opt/homebrew/bin/scala-cli 的路径
  • 在 Sublime 的构建系统(Tools → Build System → New Build System)中写死这个路径,例如:
    {
      "shell_cmd": "/opt/homebrew/bin/scala-cli run "${file}"",
      "file_regex": "^(.*):([0-9]+):([0-9]+):\s*(.*)$",
      "selector": "source.scala"
    }
  • 保存为 Scala CLI.sublime-build,并设为当前文件的构建系统

如何让 scala-cli 正确识别本地依赖(比如 scala-parser-combinators)

scala-cli 默认只拉取中央仓库的发布版,但如果你正在开发一个尚未发布的库,或想验证本地修改,就得用 --dependency 或 --classpath 手动注入。

常见错误是直接写 --dependency org.scala-lang:scala-parser-combinators_2.13:2.3.0 却发现版本冲突或解析失败——这是因为 scala-cli 会自动推导 Scala 版本,而你没对齐。

Sublime Text Build Linux版
Sublime Text Build Linux版

Sublime Text Linux x86-64 deb 安装包。官方也提供 rpm、tar.xz 和软件源安装方式。

下载
  • 确认项目用的 Scala 版本:看 scala-cli 输出的 Using Scala 3.x 或 Using Scala 2.13.x,再选对应后缀的 artifact(如 _2.13 或 _3)
  • 本地 jar 文件要用 --classpath /path/to/mylib.jar,不是 --dependency
  • 如果依赖本身有 transitive 依赖,scala-cli 不会自动 resolve,得自己列全,或改用 scala-cli compile --include-deps 阶段验证

Sublime Text 中调试 scala-cli 脚本时看不到堆栈信息怎么办

默认 scala-cli run 捕获了异常并做了美化输出,把原始行号和类名藏掉了,导致 Sublime 构建面板里只显示“Error”而没有具体位置。

关键是要绕过 scala-cli 的异常包装,强制 JVM 输出原生 stack trace:

  • 在构建命令里加 -J-Dscala.cli.suppress.errors=false(适用于较新版本)
  • 更通用的做法是改用 scala-cli compile + scala-cli run 分步:先编译确认无语法错,再运行;编译失败时 scala-cli 会输出标准 scalac 错误格式,Sublime 的 file_regex 才能正确高亮
  • 如果用了 @main 方法但入口参数不对,错误可能被吞掉——这时在脚本开头加 println("START") 快速判断是否执行到那一步

为什么修改了 .scala 文件后 scala-cli 没重新编译,总跑旧结果

scala-cli 默认启用缓存(基于文件内容 hash),但它不监听文件系统变化,Sublime 保存后不会自动触发 rebuild。你看到的“没更新”,其实是它复用了上次的 class output。

  • 临时解决:每次改完手动加 --force,如 scala-cli run --force ${file}
  • 长期建议:在构建系统里把 "shell_cmd" 改成 "shell_cmd": "rm -rf .scala-cli && /path/to/scala-cli run "${file}"",清掉缓存目录(.scala-cli)再跑
  • 注意:删缓存会损失增量编译速度,日常开发可接受;CI 或批量验证时建议保留,靠 --watch 配合外部工具(如 fswatch)来监听

缓存路径默认在项目根下 .scala-cli,但如果你没在项目根打开 Sublime(而是单文件打开),scala-cli 会 fallback 到系统临时目录,导致清理失效——这点最容易被忽略。

相关文章

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

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

下载

相关标签:

sublime sublime text

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

相关专题

更多
Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

2026.10.22

0

15

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

2026.10.22

0

16

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

2026.10.22

0

12

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

2026.10.22

0

13

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

2026.10.22

20

31

二狗PPT入门与基础操作
二狗PPT入门与基础操作

本专题整理二狗PPT从官网进入、输入主题、生成大纲到制作成稿的基础操作,帮助新手掌握AI一键生成职场PPT的完整流程。

2026.10.22

0

14

热门下载

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

精品课程

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