错误的args数传递给:repl $ repl

时间:2010-05-17 16:51:40

标签: clojure compojure leiningen

我遇到了一个难以理解的“入门”示例,我不理解。当我从http://weavejester.github.com/compojure/docs/getting-started.html

运行示例时

...我在lein repl步骤中收到以下错误:

~/hello-www> lein repl src/hello_www/core.clj
Exception in thread "main" java.lang.IllegalArgumentException: Wrong number of args passed to: repl$repl (NO_SOURCE_FILE:0)
    at clojure.lang.Compiler.eval(Compiler.java:5359)
    at clojure.lang.Compiler.eval(Compiler.java:5311)
    at clojure.core$eval__4350.invoke(core.clj:2364)
    at clojure.main$eval_opt__6502.invoke(main.clj:228)
    at clojure.main$initialize__6506.invoke(main.clj:247)
    at clojure.main$script_opt__6526.invoke(main.clj:263)
    at clojure.main$main__6544.doInvoke(main.clj:347)
    at clojure.lang.RestFn.invoke(RestFn.java:483)
    at clojure.lang.Var.invoke(Var.java:381)
    at clojure.lang.AFn.applyToHelper(AFn.java:180)
    at clojure.lang.Var.applyTo(Var.java:482)
    at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalArgumentException: Wrong number of args passed to: repl$repl
    at clojure.lang.AFn.throwArity(AFn.java:439)
    at clojure.lang.AFn.invoke(AFn.java:43)
    at clojure.lang.Var.invoke(Var.java:369)
    at clojure.lang.AFn.applyToHelper(AFn.java:165)
    at clojure.lang.Var.applyTo(Var.java:482)
    at clojure.core$apply__3776.invoke(core.clj:535)
    at leiningen.core$_main__59$fn__61.invoke(core.clj:94)
    at leiningen.core$_main__59.doInvoke(core.clj:91)
    at clojure.lang.RestFn.applyTo(RestFn.java:138)
    at clojure.core$apply__3776.invoke(core.clj:535)
    at leiningen.core$_main__59.invoke(core.clj:97)
    at user$eval__67.invoke(NO_SOURCE_FILE:1)
    at clojure.lang.Compiler.eval(Compiler.java:5343)
    ... 11 more

我已经尝试了lein的稳定版和开发版,但没有成功。关于我接下来要找什么的任何想法?我在linux和cygwin上得到了相同的结果。

当我手动运行它时,它似乎在linux上正常工作:

java -cp "lib/*" clojure.main  src/hello_www/core.clj
2010-05-17 19:34:17.280::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
2010-05-17 19:34:17.281::INFO:  jetty-6.1.14
2010-05-17 19:34:17.382::INFO:  Started SocketConnector@0.0.0.0:8080

1 个答案:

答案 0 :(得分:2)

考虑到你对这个问题的评论 - 相关部分是“使用lein-stable它可以工作,但不能与git的主人合作。” - 我会说你正在受到Leiningen对2010年4月16日提交repl中提到的44b6369aec1e23bcda1db1b6570a03ca524464e5任务的新处理的打击。

Leiningen 1.1于2月16日发布并以旧方式执行,这意味着repl任务由lein脚本专门处理; post - 44b6369aec Leiningen以与所有其他任务相同的方式处理repl任务,即通过leiningen.repl/repl函数。后者根本不接受其他参数,因此您正在看到与arity相关的IllegalArgumentException。在您提出要求之前,我不确定将来是否可能会发生变化。

lein repl后面跟(require 'hello-www.core)有什么用;然而令人遗憾的是,Leiningen的HEAD似乎存在一个问题,它阻止了它的工作(至少在我的盒子上)。期望它最终会得到修复是一个安全的赌注,但目前只需使用lein-stable。那个Compojure教程使用的是Clojure 1.1而不是前沿......它可能会为你节省一些时间以同样的方式对待Leiningen。