2024 Clojure 状态调查!中分享您的想法。

欢迎!请参阅关于页面以了解有关此工作的更多信息。

0
Clojure

我的 Clojure/Lein/Cider 组合出现故障。我想完全移除一切并重新安装,但不知道“一切”意味着什么。

提前感谢!
Bruce

1 答案

0

这取决于你是如何安装它们(以及你在什么操作系统上等)。

你好!感谢你的回复。

运行在
macOS Catalina 10.15.6
Java: OpenJDK 运行环境(构建 1.8.0_282-b08)

使用 homebrew 安装了 lein
/usr/local/Cellar/leiningen/2.9.5/bin/lein

搜索 clojure*.jar
/usr/local/Cellar/clojure/1.10.2.774/libexec/clojure-tools-1.10.2.774.jar
.m2/repository/org/clojure/clojure/1.3.0/clojure-1.3.0.jar
.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar
.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar
.m2/repository/clojure-complete/clojure-complete/0.2.4/clojure-complete-0.2.4.jar
.m2/repository/clojure-complete/clojure-complete/0.2.5/clojure-complete-0.2.5.jar

{我以前试过玩 Clojure}

emacs clojure-mode
.emacs.d/elpa/clojure-mode-20201126.1558

~/.lein/profiles.clj 的内容
{:user {:plugins [[cider/cider-nrepl "0.8.1"]]}}%

搜索 cider*
.m2/repository/cider/cider-nrepl/0.8.1/cider-nrepl-0.8.1.jar
.emacs.d/elpa/cider-20210127.640

使用lein repl
出现错误。错误信息如下:
clojure.lang.Compiler$CompilerException: 语法错误在编译 (cider/nrepl.clj:1:1) 时引发。
#:clojure.error{:phase :compile-syntax-check, :line 1, :column 1, :source "cider/nrepl.clj"}

然后是堆栈跟踪。其中一段是:
Caused by: java.io.FileNotFoundException: 在类路径中找不到 clojure/tools/nrepl/server__init.class, clojure/tools/nrepl/server.clj 或 clojure/tools/nrepl/server.cljc。

以及更多的堆栈跟踪。

我想起来在elpa下的cider版本完全不同。这可能是问题所在吗?
by
lein repl的问题在于您在 ~/.lein/profiles.clj 文件中指定了一个极其旧的 cider-nrepl 版本,它的语法不再被 Clojure 所接受。

首先尝试将 ~/.lein/profiles.clj 中的版本 0.8.1 更改为 0.25.8。

如果这不能使 lein repl 运行,只需删除您的 ~/.lein/profiles.clj 文件(包含不适当的插件或过时的插件)。

您已安装最新的 Clojure CLI,因此您应该能够运行以下命令以获取 REPL:clj
by
谢谢!
lein repl 已恢复,cider-jack-in 也工作正常。
但 cider-jack-in 告诉我我应该升级 cider。
我该如何安全地升级?我应该关注哪个版本?
by
关于 Emacs/CIDER,很抱歉,我已经多年未使用过了。
by
没关系。出于好奇,你使用的是哪种编辑器/IDE?
大约四五年前,我从 Emacs/CIDER 切换到 Atom/ProtoREPL,然后 ProtoREPL 无人维护,所以我切换到 Atom/Chlorine(我非常喜欢它,因为它只需要一个普通的 Socket REPL -- 没有任何依赖项)然后 Chlorine 作者去年将它移植到 VS Code 的 Clover 版本,从那时起,我转向 VS Code/Clover。

现在 Calva 有一个模式可以禁用其自己的 REPL UI,因此我现在有 VS Code/Clover+Calva(仍然使用 Clover 来处理 REPL 的事情,但可以利用 Calva 从 LSP 驱动的静态代码分析,这很棒,我还能够卸载一些其他 VS Code 扩展,因为 Calva “都做了这些”)。
...