2010-05-17 4 views
3

J'ai un problème avec un exemple "Getting started" de compojure que je ne comprends pas. Quand je lance l'exemple de http://weavejester.github.com/compojure/docs/getting-started.html

... Je reçois l'erreur suivante à l'étape de rempl de 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 

J'ai essayé à la fois la version stable et le développeur de lein sans succès. Des idées sur ce que je pourrais rechercher ensuite? J'obtiens le même résultat à la fois sur linux et cygwin.

Quand je lance manuellement, il semble fonctionner très bien sur 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 [email protected]:8080 
+0

J'ai vérifié qu'avec Leiningen 1.1 le didacticiel que vous avez lié fonctionne bien pour moi. Avez-vous 'lein-stable' configuré correctement? (Une façon de vérifier serait de supprimer le répertoire 'lib /' de votre commande de HEAD de lein et de voir si vous pouvez faire 'deps 'stable'.) –

+0

J'ai utilisé le dernier leiningen de git. 1.2. Avec lein-stable cela fonctionne, mais pas avec le maître de git. Notez que j'ai suivi le guide de "Hacking", premier bootstrap avec stable avant de relier la version git master. – grm

Répondre

2

Compte tenu de votre commentaire sur la question - la partie pertinente est « Avec elle fonctionne lein stable, mais pas avec maître de git. " - Je dirais que vous être frappé par une nouvelle gestion de la tâche repl de Leiningen Introduit COMMIT 44b6369aec1e23bcda1db1b6570a03ca524464e5 du 16 Avril 2010.

Leiningen 1.1 a été publié le 16 Février et fait des choses à l'ancienne, ce qui signifie la La tâche repl est gérée spécialement par le script lein; post- 44b6369aec Leiningen gère la tâche repl de la même manière que toutes les autres, c'est-à-dire via la fonction leiningen.repl/repl. Ce dernier n'accepte tout simplement pas d'arguments supplémentaires, d'où le IllegalArgumentException lié à l'arité que vous voyez. Avant que vous posiez la question, je ne suis pas sûr que cela puisse changer à l'avenir.

Ce qui devrait fonctionner est lein repl suivi de (require 'hello-www.core); Malheureusement, cependant, il semble y avoir un problème avec HEAD de Leiningen qui empêche cela de fonctionner (au moins sur ma boîte). C'est un pari sûr de s'attendre à ce que cela se corrige finalement, mais pour l'instant, utilisez simplement lein-stable. Ce tutoriel Compojure utilise Clojure 1.1 et non le bord saignant ... Cela pourrait vous faire gagner du temps pour traiter Leiningen de la même manière.

+0

Merci Michal. Je vais suivre votre conseil. – grm

Questions connexes