在以下链接中http://clojure.org/reference/repl_and_main#_launching_a_socket_server,详细介绍了如何从Java启动socket REPL,但我正在使用Lein,所以如何从Lein启动。如果从Boot启动可以正常运行,我也可以尝试使用Boot。
要启动一个 Socket 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=>
boot即将推出一个名为socket-server
的任务。截至boot 2.7.1版本,尚未发布包含此任务的版本。
与此同时,您可以使用以下命令启动Socket REPL。使用boot在端口50505上启动一个Clojure进程并监听Socket REPL,请使用:
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