You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode中Calva插件干扰Clojure项目Lein编译路径如何解决?

问题根因

Calva插件在VSCode启动、或者执行Jack-in连接REPL的操作时,会自动生成临时的Clojure运行配置edn文件写入系统临时目录(也就是你看到的C:\Users\felix\AppData\Local\Temp\路径下的随机命名edn文件),同时会向VSCode当前打开的集成终端会话注入Clojure类路径、Leiningen配置相关的环境变量,覆盖项目本地project.clj里定义的源码、测试文件查找规则。此时在集成终端执行Lein命令,Lein会优先读取Calva注入的临时配置,转而到临时目录下查找.clj文件,触发异常。
不在VSCode环境下打开终端执行命令时,没有Calva注入的污染环境变量,Lein会正常读取项目根目录下的配置文件,因此运行、测试都不会出问题。

修复方案
  • 关闭Calva的自动配置注入
    打开VSCode设置面板,分别搜索以下两个配置项,取消对应勾选:
    • Calva: Auto Inject Jack in
    • Calva: Inject Nrepl Middleware
      修改完成后重启VSCode,后续新开的集成终端就不会被Calva注入环境变量,Lein会恢复原有的路径查找逻辑。
  • 临时清空污染的环境变量
    如果不想修改Calva全局配置,在VSCode集成终端执行Lein命令前,先根据你用的终端类型执行对应命令清空注入的类路径变量:
    • Windows Cmd环境:执行set clojure.classpath=
    • Windows PowerShell环境:执行Remove-Item Env:clojure.classpath -ErrorAction SilentlyContinue
      清空后再执行lein test、lein run等命令即可正常读取项目本地配置。
  • 使用独立外部终端执行Lein命令
    直接打开系统独立终端(独立cmd窗口、Windows Terminal、PowerShell窗口等),切换到项目根目录执行Lein相关命令,这类终端不会加载VSCode和Calva注入的环境变量,运行逻辑和你未通过VSCode打开项目时完全一致。

注意:Calva执行Jack-in连接REPL的过程中,会持续修改当前集成终端的Clojure运行环境变量,此时尽量不要在同一个终端会话里直接执行Lein的编译、测试命令,避免出现路径、依赖冲突。

内容的提问来源于stack exchange,提问作者Tarmiac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.08 16:15:17