【问题标题】:Wrong number of args passed to: repl$repl传递给的参数数量错误:repl$repl
【发布时间】:2011-02-20 12:22:44
【问题描述】:

我对一个我不理解的组合“入门”示例有疑问。当我从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

【问题讨论】:

  • 我用 Leiningen 1.1 检查了你链接到的教程对我来说很好。您是否正确设置了lein-stable? (一种检查方法是在 lein 的 HEAD 结帐时删除 lib/ 目录,然后看看是否可以执行 lein-stable deps。)
  • 我使用了来自 git 的最新 leiningen。 1.2.使用 lein-stable 它可以工作,但不能使用 git 的 master。请注意,我遵循“黑客”中的指南,在链接 git 主版本之前首先使用 stable 引导。

标签: clojure compojure leiningen


【解决方案1】:

考虑到您对该问题的评论 - 相关部分是“使用 lein-stable 它可以工作,但不能使用来自 git 的 master。” -- 我想说 Leiningen 在 2010 年 4 月 16 日提交 44b6369aec1e23bcda1db1b6570a03ca524464e5 中引入的 repl 任务的新处理方式让您深受打击。

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。

【讨论】:

  • 谢谢米哈尔。我会听从你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2020-02-04
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
相关资源
最近更新 更多