4

我偶尔会遇到这个问题,并且通常会解决它,但这很令人沮丧。

我的类路径上有所有Incanter(如果您不知道,请查看:它很棒)。我尝试像这样(通过 Slime REPL)导入它:user> (use 'incanter.core),但失败了。

这样做:user> (use 'clojure.contrib.def)工作得很好,而且这个文件在同一个地方——在我的类路径上。

无论如何,错误与类路径无关:它是这样的:

Don't know how to create ISeq from: clojure.lang.Symbol
  [Thrown class java.lang.IllegalArgumentException] 

你可以在这里看到我的整个终端(截图)。

我不知道这里发生了什么,这真的很令人沮丧,因为我真的很想使用 Incancter,而且我可以从 Incanter 二进制文件的 REPL 中使用。我绝对不想从中发展——这应该可行。

任何帮助将不胜感激。

编辑:

看起来 Incanter需要Clojure 1.2,并lein swank给了我 Clojure 1.1。这可能是我的问题的原因:如果是这样,有没有办法继续将 Swank & Lein 与 Clojure 1.2 一起使用

再次感谢!

编辑:

显然,如果您开始使用 Clojure-1.1 和lein swank,除非您创建一个新项目,否则您将无法使用它。

如果以后的人有这个问题,这篇文章帮助了我,而且,至少对我来说,如果你已经开始使用 Clojure-1.1,必须开始一个新的 lein 项目leink swank简单地更改您的 project.clj 文件然后lein swank再次 ing 是行不通的。

4

1 回答 1

2

是的,您可以在 Clojure 1.2 中使用 Leiningen 和 swank-clojure。您可能需要使用最新版本的 Leiningen(我不确定某个旧限制是否lein repl仅受影响或是否也受影响lein swank;无论如何,请尝试 1.2-RC2,您可以在GitHub的下载部分找到它)。您还需要使用最新的 swank-clojure;我自己使用最前沿的结帐,在这里获取你的。

除此之外,只需为 Clojure 和 contrib 使用 1.2 jars。(Lein 使用它自己的 Clojure,与用于 的 Clojure 不同lein swank,用于其内部工作,您永远不需要关心它;swank-clojure 没有 AOT 命名空间,并且不特别关心 Clojure 版本,除非有一次a(长!)当某些东西破裂时,应用补丁并恢复欢乐。)

我希望以上内容有所帮助,但如果没有:您的问题描述不足以让我清楚地了解正在发生的事情。您能否添加有关“所有 Incanter”在您的类路径上意味着什么的信息(您是指jars?来源?您从哪里获得它们?您如何设置您的类路径?)。在不知道这一点的情况下,很难复制您的设置以尝试追踪问题的根源。当然,如果碰撞某些版本可以解决问题,请忽略我目前的困惑。;-)

于 2010-07-13T15:10:54.403 回答