我偶尔会遇到这个问题,并且通常会解决它,但是这很令人沮丧。
我的类路径上有所有的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?源吗?在哪里得到它们?如何设置类路径?)。不知道这一点,将很难复制您的设置以尝试查找问题的根源。
当然,如果遇到一些问题可以解决问题,请不要理会我当前的困惑。 ;-)