Неверное количество аргументов передано: repl $ repl - PullRequest
3 голосов
/ 17 мая 2010

У меня проблема с примером «Начало работы», который я не понимаю. Когда я запускаю пример с http://weavejester.github.com/compojure/docs/getting-started.html

... Я получаю следующую ошибку на этапе репликации lein:

~/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 Ответ

2 голосов
/ 19 мая 2010

С учетом вашего комментария к вопросу - соответствующая часть «С lein-stable работает, но не с master из git». - Я бы сказал, что вас поразила новая обработка Лейнингеном задачи repl, введенная в коммите 44b6369aec1e23bcda1db1b6570a03ca524464e5 от 16 апреля 2010 года.

Leiningen 1.1 был выпущен 16 февраля и работает по-старому, что означает, что задача repl обрабатывается специально сценарием lein; post- 44b6369aec Leiningen обрабатывает задачу repl так же, как и все остальные, т. е. через функцию leiningen.repl/repl. Последний просто не принимает дополнительных аргументов, следовательно, вы видите связанный с arity IllegalArgumentException. Прежде чем вы спросите, я не уверен, что это может измениться в будущем.

Что должно сработать, это lein repl, за которым следует (require 'hello-www.core); к сожалению, однако, кажется, что есть проблема с HEAD Лейнингена, которая мешает этому работать (по крайней мере, на моей коробке). Можно с уверенностью ожидать, что со временем это будет исправлено, но пока просто используйте lein-stable. Этот учебник по Compojure использует Clojure 1.1, а не передовую линию ... Это может сэкономить вам некоторое время, чтобы относиться к Leiningen таким же образом.

...