Domanda

Ho un problema con un compojure "Getting Started" esempio che faccio notunderstand. Quando eseguo l'esempio da http://weavejester.github.com/compojure/ docs / getting-started.html

... Ottengo il seguente errore al passo 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

Ho provato sia la stalla e la versione per sviluppatori di Lein, senza alcun successo. Tutte le idee su quello che ho potuto guardare per il prossimo? Ottengo lo stesso risultato sia su Linux e Cygwin.

Quando eseguo manualmente, sembra funzionare bene su 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
È stato utile?

Soluzione

Prendendo in considerazione i suoi commenti sulla questione - la parte rilevante è "Con Lein-stabile che funziona, ma non con il maestro da Git." -. Direi che sei stato colpito da una nuova gestione da parte di Leiningen del compito repl introdotto nel commettere 44b6369aec1e23bcda1db1b6570a03ca524464e5 dal 16 aprile 2010

Leiningen 1.1 è stato rilasciato il 16 febbraio e fa le cose alla vecchia maniera, il che significa che il compito repl viene gestito appositamente dallo script lein; post-44b6369aec Leiningen svolge il compito repl allo stesso modo tutti gli altri, cioè attraverso la funzione leiningen.repl/repl. Quest'ultimo semplicemente non accetta argomenti aggiuntivi, da cui il IllegalArgumentException arity-correlato che si sta vedendo. Prima di chiedere, non sono sicuro se questo è destinata a cambiare in futuro.

Quello che dovrebbe funzionare è lein repl seguito da (require 'hello-www.core); Purtroppo, però, sembra che ci sia un problema con la testa di Leiningen che impedisce che dal lavoro (almeno sulla mia macchina). E 'una scommessa sicura aspettarsi che sta andando a ottenere fisso alla fine, ma per il momento, basta usare lein-stable. Che Compojure tutorial utilizza Clojure 1.1 e non il bordo sanguinamento ... Potrebbe risparmiare un po 'di tempo per trattare Leiningen allo stesso modo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top