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.
发布于 2018-03-25 21:55:39
Clojure 1.9.0是模块化的,规范支持被分成两个单独的JAR,这两个JAR必须在类路径上。
请参阅https://clojure.org/news/2017/12/08/clojure19
正如Alex Miller指出的那样,新的clj工具将自动为您处理此问题。
https://stackoverflow.com/questions/49476215
复制相似问题