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

我的类路径上有所有的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]


您可以看到我的整个终端机here(屏幕截图)。

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

任何帮助将非常感激。

编辑:

好像Incanter requires Clojure 1.2,而lein swank给了我Clojure 1.1。这可能是我遇到问题的原因:如果是这样,是否有办法继续在Clojure 1.2中使用Swank&Lein?

再次感谢!

编辑:

显然,如果您开始使用Clojure-1.1和lein swank,除非您创建新项目,否则您将一直受其困扰。

如果将来的人有this article helped me out这个问题,但至少对我来说,如果您是使用leink swank和Clojure-1.1开始的,则必须启动一个新的lein项目。仅仅更改project.clj文件,然后再次lein swank无效。

最佳答案

是的,您可以在Clojure 1.2中使用Leiningen和swank-clojure。您可能需要使用Leiningen的最新版本(我不确定某个旧限制是否仅影响lein repl还是lein swank;无论如何,请尝试从下载中找到的1.2-RC2 GitHub部分)。您还需要使用足够近的swank-clojure。我自己使用流水线结帐,让您的here

除此之外,只需对Clojure和contrib使用1.2罐即可。 (Lein内部使用它自己的Clojure,与用于lein swank的Clojure分开使用,您不需要关心它; swank-clojure没有AOT的命名空间,也不特别关心Clojure的版本,除了(一阵子!)一次中断,然后应用补丁并恢复欢乐。)

希望以上内容能对您有所帮助,但如果没有帮助,您的问题说明还不足以让我清楚地了解正在发生的事情。您能否添加有关“所有Incanter”出现在类路径上的信息(您是指jar s?源吗?在哪里得到它们?如何设置类路径?)。不知道这一点,将很难复制您的设置以尝试查找问题的根源。
当然,如果遇到一些问题可以解决问题,请不要理会我当前的困惑。 ;-)

07-24 18:48
查看更多