2016-01-21 68 views
7

在下面的鏈接 http://clojure.org/reference/repl_and_main#_launching_a_socket_server如何從leiningen或boot啓動Clojure 1.8中的套接字REPL?

它有詳細的關於如何啓動插座REPL形式Java的信息,但由於我使用的雷音,所以如何從雷音開始。如果從啓動開始運行良好,我也可以嘗試使用啓動。

+0

Leiningen自動啓動套接字上的repl。看看它在啓動時打印的橫幅,看看它挑選了哪一個。 – dsm

+0

@dsm作者正在討論Clojure 1.8中的新套接字REPL,而不是Leiningen的REPL。 –

回答

12

要啓動一個套接字REPL,你需要這個選項傳遞給JVM

-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" 

在Leiningen,添加到您的project.clj

:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"] ; notice that the map is not quoted. 

和引導,出口環境變量BOOT_JVM_OPTIONS

export BOOT_JVM_OPTIONS='-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"' 

一旦你的REPL運行時,你可以從不同的終端上運行telnet連接到插座REPL。 REPLception!

$ telnet 127.0.0.1 5555 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
user=> (+ 1 1) 
2 
user=> 
+0

啓動時很明顯,因爲「export」是一個linux命令,我知道如何使用它。但是對於lein,你使用「:jvm-opts ...」,我們應該放?把它放到project.clj中? –

+0

是的,更新它。 –

1

開機即將開始socket-server task。從引導2.7.1開始,包含此任務的版本尚未發佈。

與此同時,您可以使用以下命令啓動套接字REPL。要使用一個Socket REPL使用啓動端口50505監聽推出Clojure的過程中,使用方法:

boot -i "(do (require 'clojure.core.server) (clojure.core.server/start-server {:port 50505 :name :repl :accept 'clojure.core.server/repl}))" wait 

使用Leiningen:

JVM_OPTS='-Dclojure.server.myrepl={:port,50505,:accept,clojure.core.server/repl}' lein repl 

使用痛Clojure的罐子:

java -Dclojure.server.myrepl="{:port 50505 :accept clojure.core.server/repl}" -jar ~/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar