2015-11-19 69 views
1

昨天晚上我花了一些時間弄亂了我的leinigen profiles.clj,以擺脫在我的項目中啓動蘋果酒時所打印的所有錯誤。今天,我去了終端(我喜歡在工作時保持開放),但它不起作用。我認爲這是一個蘋果酒問題,所以我嘗試了Emacs,但即使在Emacs中,如果我不在項目中,repl也不會啓動。如何在項目之外運行lein repl?

這裏的錯誤:

Error loading refactor-nrepl.middleware: clojure.lang.ArityException: Wrong number of args (4) passed to: StringReader, compiling:(abnf.clj:186:28) 
Exception in thread "Thread-4" java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context, compiling:(NO_SOURCE_PATH:0:0) 
... 
Caused by: java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context 

我的〜/ .lein/profiles.clj

{:user {:plugins [[lein-try "0.4.3"] 
        [refactor-nrepl "1.1.0"] 
        [cider/cider-nrepl "0.9.1"]] 
     :dependencies [[org.clojure/tools.nrepl "0.2.12"] 
         [acyclic/squiggly-clojure "0.1.4"] 
         ^:replace [org.clojure/tools.nrepl "0.2.12"] 
         [refactor-nrepl "1.1.0"]]}} 

事物的版本時蘋果酒在項目

; CIDER 0.9.1 (Java 1.8.0_45, Clojure 1.7.0, nREPL 0.2.12)

開始對於Clojure,Leinigen,Emacs等我還是很新的,所以我不確定爲什麼每一個g以上使得我的蘋果酒錯誤消失了,但它確實發生了。我得到的蘋果酒錯誤與nrepl版本過低有關,並沒有安裝某些東西(如refactor-nrepl)。

回答

0

當使用lein repl從lein開始repl時,它確實想要在lein項目目錄中運行。爲了這個目的,我在我的家裏保留一個名爲clj的空白lein項目。這樣,我的共同依賴已經在project.clj文件中,lein按照我喜歡的方式進行了預配置。

您可以在空目錄中啓動lein repl,但每次啓動前您都會收到10-20條錯誤消息。

另一種方法是使用內置到Clojure的jar文件中平原REPL:

~/dummy > cp /home/alan/.m2/repository/org/clojure/clojure/1.8.0-RC1/clojure-1.8.0-RC1.jar . 
~/dummy > d * 
-rw-rw-r-- 1 alan alan 3935726 Nov 19 14:11 clojure-1.8.0-RC1.jar 
~/dummy > java -jar clojure-1.8.0-RC1.jar 
Clojure 1.8.0-RC1 
user=> 

正如你所看到的,我創建了一個名爲dummy,並在clojure-*.jar文件複製一個空目錄。然後你可以用語法java -jar xxx.jar來運行它,它將完全獨立於lein而啓動一個repl。

+0

我知道我可以做一個空的項目,這是我最終可能做的。這只是我撓頭,我曾經能夠在任何地方發射,現在我不能。 –

0

我也只是保持劃傷項目,我用於快速/簡單repl會話。有一個留置權oneoff插件,它可以使簡單的單文件lein項目變得簡單,這可能是有用的。

你可以做的另一件事是設置爲基本上得到一個REPL了

0

工作你有什麼雷音版本的引導配置,我用2.5.3,我可以在任何地方開始lein repl

Shell:~ >: lein repl 
nREPL server started on port 52343 on host 127.0.0.1 - nrepl://127.0.0.1:52343 
REPL-y 0.3.7, nREPL 0.2.10 
Clojure 1.7.0 
Java HotSpot(TM) 64-Bit Server VM 1.8.0_60-b27 
    Docs: (doc function-name-here) 
      (find-doc "part-of-name-here") 
    Source: (source function-name-here) 
Javadoc: (javadoc java-object-or-class-here) 
    Exit: Control+D or (exit) or (quit) 
Results: Stored in vars *1, *2, *3, an exception in *e 

user=> Bye for now! 
Shell:~ >: lein version 
Leiningen 2.5.3 on Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM 

Shell:~ >: cat .lein/profiles.clj 
{:1.2 {:dependencies [[org.clojure/clojure "1.2.0"]]} 
:1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]} 
:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]} 

:user {:plugins [[lein-immutant "2.0.0-alpha2"] 
        [lein-clojars "0.9.1"] 
        [lein-ancient "0.5.5"] 
        [lein-kibit "0.0.8"] 
        [lein-try "0.4.3"] 
        [venantius/ultra "0.2.0"]] 
     :ultra {:color-scheme :solarized_dark}}} 
+0

雷音REPL(一個項目)'nREPL服務器開始端口55164主機127.0.0.1 - nrepl://127.0.0.1:55164 REPL-Y 0.3.5,nREPL 0.2.12 Clojure的1.7.0' lein -v '在Java 1.8.0_45上的Leiningen 2.5.1 Java HotSpot(TM)64位服務器VM' –