2010-05-17 32 views
3

我遇到了一個組合「開始」示例,我不明白的問題。當我運行從http://weavejester.github.com/compojure/docs/getting-started.html

的例子......我得到以下錯誤在雷音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 

我已經試過雷音的穩定和開發版本都沒有成功。關於接下來我能找到什麼的想法?我在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 [email protected]:8080 
+0

我用Leiningen 1.1檢查過,你鏈接的教程適合我。你的「穩定」設置是否正確? (檢查的一種方法是刪除lein的HEAD結賬中的'lib /'目錄,看看你是否可以做'lein-stable deps'。) – 2010-05-18 04:30:46

+0

我使用了git的最新版本leiningen。 1.2。使用lein-stable可以工作,但不能和git的master兼容。請注意,我遵循「Hacking」的指南,首先在穩定鏈接git master版本之前進行引導。 – grm 2010-05-18 21:12:48

回答

2

考慮到的問題,您的評論 - 相關的部分是「隨着雷音穩定它的工作原理,但與來自git的主人。「 - 我想說,你正在受到Leiningen對2010年4月16日起在44b6369aec1e23bcda1db1b6570a03ca524464e5中引入repl任務的新處理的影響。

Leiningen 1.1於2月16日發佈,並且以舊方式運行,意思是repl任務由lein腳本專門處理; post-44b6369aec Leiningen以與所有其他人相同的方式處理repl任務,即通過leiningen.repl/repl功能。後者根本不接受其他參數,因此您看到的與參數相關的IllegalArgumentException。在你問之前,我不確定未來這種情況是否會改變。

應該工作的是lein repl其次是(require 'hello-www.core);但令人遺憾的是,Leiningen的HEAD似乎存在一個問題,它妨礙了工作(至少在我的盒子上)。可以預見,它最終會得到修復,但暫時只需使用lein-stable即可。 Compojure教程使用Clojure 1.1,而不是流血的邊緣......它可能會節省您一些時間以相同的方式處理Leiningen。

+0

謝謝Michal。我會按照你的建議。 – grm 2010-05-19 05:42:13