为什么导入 clojure.spec.alpha 出错?

Why there is error in importing clojure.spec.alpha?

我有一个具有以下依赖项的 boot-clj 项目,

 :dependencies   '[[org.clojure/clojure "RELEASE"]
                            [adzerk/boot-test "RELEASE" :scope "test"]]

在那个项目下,我 运行 boot repl 正在尝试 clojure.spec

作为第一步,我尝试使用

导入所需的依赖项

(require '[clojure.spec.alpha :as s])

这样做时,出现以下错误,

  java.lang.IllegalStateException: Attempting to call unbound fn: #'clojure.core/ident? 

java.lang.ExceptionInInitializerError:

这是什么意思?以及如何修复它?

尝试以下操作:

[org.clojure/clojure "1.10.1"]
[adzerk/boot-test "1.2.0"]

使用 "RELEASE" 而不是具体的版本号是有问题的,因为它会导致不可重复的构建。

我还建议偶尔使用 lein-ancient 以在需要更新依赖项版本时通知您。

https://github.com/xsc/lein-ancient


您可以在此处找到更多信息:

当 运行 boot repl,

时,我没有注意到以下错误

Classpath conflict: org.clojure/clojure version 1.8.0 already loaded, NOT loading version 1.10.1

按照建议 ,我必须添加 boot.properties 内容 BOOT_CLOJURE_VERSION=1.10.1 才能解决它。

澄清一下,难怪规范在上面的 REPL 中不起作用,因为规范需要 Clojure 1.9.0 或更高版本。

错误的原因可能是 clojure.core/ident?1.8.0

中不可用