clojure - 远程 REPL 无输出,如何在 PrintWriter 中复制输出?(Clojure)
问题描述
无法正确连接远程 REPL
以下是我执行的步骤:
- 启动本地 repl 实例:lein repl
- 通过远程 repl 实例连接到本地(我通过 Intellij IDEA 完成)
在此之后,代码中的每个输出都只在本地复制中,在远程复制中什么都没有
我需要什么:查看两个 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 的实例
但是我需要的是:看到 BOTH repls 输出相同,怎么做?
解决方案
我似乎不认为你对如何连接到现有的 REPL(你从命令行启动的那个lein repl
)感到困惑。您是否检查了草书手册中的远程 REPL部分?
通常,您只需要以下其中一项:
在已经使用 Leiningen 管理的项目上从 Intellij 本身启动 REPL(例如,它已经有一个
project.clj
文件),或者连接到一个已经在运行的 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
或localhost
)上侦听端口39919
(每次启动 REPL 时,此端口都会更改lein repl
)。您需要在 Intellij 中输入这些值才能连接到此 REPL。
推荐阅读
- java - 如何在方面关联中获取切入点上下文?
- gradle - 在构建损坏的情况下,下游开发人员的自定义 gradle 错误
- flutter - 断言失败:第 378 行 pos 10:“数据!= null”:必须向文本小部件提供非空字符串
- c - 如何使用 OpenMP ic C 动态更新 for 循环的边界?
- node.js - JWT 授权和认证
- swift - Persist changes to core data item from SwiftUI view
- sql - “列作为别名”与“别名 = 列”的兼容性
- php - 我有几个关于 Laravel 如何工作的问题
- python - 收到错误布朗尼无法导入 AdvancedCollectibles
- database - 三元嵌套事实类型 ORM