如何从leiningen或boot启动Clojure 1.8中的套接字REPL?

时间:2016-01-21 14:25:36

标签: clojure

在以下链接中 http://clojure.org/reference/repl_and_main#_launching_a_socket_server

它有关于如何从java启动套接字REPL的详细信息,但由于我使用的是lein,所以如何从lein开始。如果从启动开始运行良好,我也可以尝试使用启动。

2 个答案:

答案 0 :(得分:14)

要启动套接字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中导出环境变量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=>

答案 1 :(得分:2)

启动即将发布socket-server task。从引导2.7.1开始,包含此任务的版本尚未发布。

在此期间,您可以使用以下命令启动套接字REPL。要使用引导在端口50505上侦听Socket REPL来启动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 jar:

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