2016-01-21 67 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