Pergunta

Tenho um problema com um exemplo de "começar" que não entenda. Quando eu corro o exemplo de http://weavejester.github.com/compojure/docs/getting-started.html

... Eu recebo o seguinte erro na etapa 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

Eu tentei a versão estável e o desenvolvedor de Lein sem nenhum sucesso. Alguma idéia do que eu poderia procurar a seguir? Eu recebo o mesmo resultado tanto no Linux quanto no Cygwin.

Quando eu o corro manualmente, parece funcionar bem no 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
Foi útil?

Solução

Levando em consideração seu comentário sobre a pergunta-a parte relevante é "com o estável de Lein, ele funciona, mas não com o mestre do Git". - Eu diria que você está sendo atingido pelo novo manuseio de Leiningen do repl tarefa introduzida em comprometimento 44b6369aec1e23bcda1db1b6570a03ca524464e5 a partir de 16 de abril de 2010.

Leiningen 1.1 foi lançado em 16 de fevereiro e faz as coisas da maneira antiga, o que significa repl a tarefa é tratada especialmente pelo lein roteiro; publicar-44b6369aec Leiningen lida com o repl tarefa da mesma maneira que todos os outros, ou seja, através do leiningen.repl/repl função. O último simplesmente não aceita argumentos adicionais, daí o relacionado à arity IllegalArgumentException que você está vendo. Antes de perguntar, não tenho certeza se é provável que isso mude no futuro.

O que deve funcionar é lein repl Seguido por (require 'hello-www.core); Lamentavelmente, no entanto, parece haver um problema com a cabeça de Leiningen que impede que isso funcione (pelo menos na minha caixa). É uma aposta segura esperar que ela seja consertada eventualmente, mas por enquanto, basta usar lein-stable. Esse tutorial de composição usa Clojure 1.1 e não a borda sangrando ... pode economizar algum tempo para tratar Leiningen da mesma maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top