远程REPL无输出,如何在PrintWriter中复制输出?(Clojure)

问题描述 投票:0回答:1

无法正确连接远程REPL

以下是我要做的步骤:

  1. 启动本地repl实例:lein repl
  2. 通过远程repl实例连接到本地(我通过Intellij IDEA实现)

在此之后,代码中的每个输出仅在本地repl中进行,而在远程中则没有任何内容

我需要的是:查看两个repl实例中的所有输出

我找到了部分解决方案,这段代码将一个repl的输出重新绑定到另一个repl。只需在远程运行它,所有输出都将转到它

(defn rebind-output []
  (prn "Rebinding output...")
  (System/setOut (PrintStream. (WriterOutputStream. *out*) true))
  (System/setErr (PrintStream. (WriterOutputStream. *err*) true))
  (alter-var-root #'*out* (fn [_] *out*))
  (alter-var-root #'*err* (fn [_] *err*)))

out - 是PrintWriter的实例

但是我需要的是:看两个输出相同的人,怎么做?

clojure output read-eval-print-loop
1个回答
0
投票

我似乎无法想到您对如何连接到现有REPL(使用lein repl从命令行启动的REPL)感到困惑。您是否查看了Cursive manual中的Remote REPL部分?

通常,您只需要其中一个:

  • 从已经使用Leiningen管理的项目中启动Intellij本身的REPL(例如,它已经有一个project.clj文件),或者
  • 连接到已在运行的REPL,一个在同一主机上运行的REPL,或在另一台机器上运行。

如果你自己在控制台中启动lein repl,你会看到它在启动时打印一些消息:

$ lein repl
nREPL server started on port 39919 on host 127.0.0.1 - nrepl://127.0.0.1:39919

在此示例中,服务器开始在端口127.0.0.1上侦听我自己的主机(localhost39919)(每次使用lein repl启动REPL时,此端口都会更改)。您需要在Intellij中输入这些值才能连接到此REPL。

© www.soinside.com 2019 - 2024. All rights reserved.