Leiningen将clojure-1.9.0.jar
作为依赖项下载。它位于~/.m2/repository/org/clojure/clojure/1.9.0
。通过lein repl工作正常。
但是,如果(从~/.m2/repository/org/clojure/clojure
我运行java -jar 1.9.0/clojure-1.9.0.jar
,而不是预期的行为(启动REPL),我会得到一个例外:
Could not locate clojure/spec/alpha__init.class or clojure/spec/alpha.clj on classpath.
对于其他Clojure版本(1.8.0,1.6.0,1.4.0),我按预期获得了一个REPL。
那么clojure-1.9.0.jar - 或者我的设置 - 还是我的理解有什么不对?
注意:
如果我在包含具有Clojure 1.9.0依赖项的项目的目录中运行lein repl
,我会得到一个带有Clojure 1.9.0的REPL,但是如果我从任何其他目录启动Leiningen,我会得到一个带有Clojure 1.8.0的REPL。在这两种情况下,REPL版本都是REPL-y 0.3.7, nREPL 0.2.12
。
正在运行lein upgrade
会生成消息Leiningen is already up-to-date.
答案 0 :(得分:4)
Clojure 1.9.0模块化,规范支持分解为必须在类路径上的两个单独的JAR。
请参阅https://clojure.org/news/2017/12/08/clojure19
正如Alex Miller指出的那样,新的clj工具会自动为您解决此问题。
答案 1 :(得分:0)