IntelliJ+Cursive插件运行Clojure REPL配置故障求助
问题梳理
环境信息
- Clojure版本:1.12.0.1488
- IDE及插件:IntelliJ 2024.3 + Cursive 2025.1.1-343
- JDK:OpenJDK 24
- 系统:VoidLinux(内核6.12.28_1)
- 终端:nushell 0.103.0、kitty 0.41.0
核心问题
- IDE配置REPL运行参数
-M:rebel -m hi时,报错“找不到或无法加载主类clojure.main” - 终端执行
clojure -M:rebel -m hi提示“未知选项-m”,但clojure -M -m hi可正常运行 - 已通过在
deps.edn添加:paths ["src"]解决Cursive无法识别ns/defn等关键字的问题,但REPL故障未解决
解决方案
1. 修正rebel-readline的deps.edn配置
rebel-readline的别名需要明确指定主类为rebel-readline.main,而非默认的clojure.main,确保你的deps.edn配置如下:
{:paths ["src"] :aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}} :main-opts ["-m" "rebel-readline.main"]}}}
2. 调整终端运行命令的参数逻辑
使用rebel-readline时,-m参数不属于clojure命令的顶层选项,正确的终端启动方式有两种:
- 用rebel的
--main参数指定入口类:clojure -M:rebel --main hi - 先启动rebel REPL,再手动加载命名空间:
clojure -M:rebel # 进入REPL后执行 (require 'hi) (in-ns 'hi)
3. 修正IntelliJ Cursive的REPL配置
不要直接在REPL参数中叠加-m hi,按以下方式调整:
- 打开Run/Debug Configurations,选中你的Clojure REPL配置
- 在“Parameters”栏仅填写
-M:rebel - 启动REPL后,手动在控制台执行加载命令:
(require 'hi) (in-ns 'hi)
如果想启动后自动进入hi命名空间,可修改deps.edn的rebel别名,添加初始化命名空间配置:
{:paths ["src"] :aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}} :main-opts ["-m" "rebel-readline.main" "--init-ns" "hi"]}}}
此时IDE和终端直接执行-M:rebel即可自动进入hi命名空间。
4. 验证Clojure工具链完整性
执行clojure -Sdescribe查看工具链版本,确认系统中的clojure命令为官方clojure-tools,且版本与Clojure 1.12.0.1488兼容。
内容的提问来源于stack exchange,提问作者Aurélien Plazzotta
相关产品推荐
相关产品推荐

