【问题标题】:Exception running clojure-1.9.0.jar: missing clojure/spec/alpha__init.class and clojure/spec/alpha.clj运行 clojure-1.9.0.jar 的异常:缺少 clojure/spec/alpha__init.class 和 clojure/spec/alpha.clj
【发布时间】:2018-03-25 13:11:45
【问题描述】:

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.

【问题讨论】:

标签: java clojure


【解决方案1】:

Clojure 1.9.0 是模块化的,规范支持分为两个单独的 JAR,它们必须在您的类路径中。

https://clojure.org/news/2017/12/08/clojure19

正如 Alex Miller 指出的那样,新的 clj 工具会自动为您解决这个问题。

【讨论】:

    【解决方案2】:

    这些类已经被拆分出来了,你可以在这里下载缺少的jar:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-16
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2017-02-19
      相关资源
      最近更新 更多