【问题标题】:Why does my Clojure import fail?为什么我的 Clojure 导入失败?
【发布时间】:2011-09-29 01:59:48
【问题描述】:
我在 IntelliJ 中运行带有 contrib 1.1 的 Clojure 1.3。我的程序由一行组成
(use 'clojure.contrib.prxml)
运行时出现以下错误
Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchMethodError: clojure.lang.RestFn.<init>(I)V
【问题讨论】:
-
对于 Clojure 1.3 项目,prxml.clj 可以简单地从 contrib like this 复制。
标签:
clojure
clojure-contrib
【解决方案1】:
我正在使用 contrib 1.1 运行 Clojure 1.3
你的问题。 Clojure 和 contrib 版本相互关联,并且跨版本不兼容。
更重要的是,从 1.3 开始,contrib 已被拆分为许多较小的库,因此实际上没有可以在 1.3 中使用的“monolithic contrib”版本。
【解决方案2】:
除了说contrib 1.1与clojure 1.3不兼容的答案
取自here:
clojure-contrib 的版本与 Clojure 的版本相匹配。
如果您使用 Clojure 1.0,请使用 clojure-contrib 1.0。
如果您使用 Clojure 1.1,请使用 clojure-contrib 1.1。
如果您使用 Clojure 1.2,请使用 clojure-contrib 1.2 或新的 modular Contrib 库。
如果您使用 Clojure 1.3,请使用新的 modular Contrib 库。
截至本回复日期,我不确定是否有与clojure-1.3 兼容的clojure.contrib.prxml 版本(如果我错了,请大家纠正我)。
所以我建议使用clojure-1.2.1 和clojure-contrib 1.2.0。
【解决方案3】:
调用 clojure 1.2 和 contrib 1.2 没有问题
如果您不需要任何特定于 1.3 的内容,我建议您暂时坚持使用 1.2,使用 clojure 1.2 和 contrib 1.2,直到 contrib 作者正确过渡到 1.3