Clojure Leiningen在控制台输入上冻结
为什么试图用BufferedReader从控制台读取一行会冻结Leiningen REPLClojure Leiningen在控制台输入上冻结,clojure,leiningen,console-input,Clojure,Leiningen,Console Input,为什么试图用BufferedReader从控制台读取一行会冻结Leiningen REPL lein repl nREPL server started on port 65142 REPL-y 0.2.0 Clojure 1.5.1 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc
lein repl
nREPL server started on port 65142
REPL-y 0.2.0
Clojure 1.5.1
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
user=> (import [java.io BufferedReader BufferedWriter InputStreamReader])
java.io.InputStreamReader
user=> (.readLine (BufferedReader. (InputStreamReader. System/in)))
调用
leinrepl
实际上启动了一个新的后台服务器进程来评估代码;您在控制台中看到的是一个客户端进程,它将代码发送到服务器进行评估,然后显示返回的结果。我怀疑这里发生的是,当REPL服务器在中计算System/in时,它实际上是指服务器进程的stdin,您无法从客户端写入它
将(InputStreamReader.System/in)
替换为*in*
应该允许您的代码从REPL以及直接启动lein run
或java
Try(read line)时工作。查看是否发生同样的情况。请尝试降级到lein 2.1.2(我的版本,如粘贴中所示)