我通过lein获得了一个哑终端,而我通过uberjar获得了一个非哑终端。lein正在做什么来导致这个问题,以及如何修复它?这是在Win 10终端上发生的
我的项目依赖关系:
:dependencies [[org.clojure/clojure "1.9.0"]
[org.jline/jline "3.11.0"]
[org.fusesource.jansi/jansi "1.18"]]主要功能:
(defn -main
[& args]
(let [term (.. (TerminalBuilder/builder)
(system true)
(build))
reader (.. LineReaderBuilder
(builder)
(terminal term)
(build))]
(println (.getName term) (.getType term))
(let [line (.readLine reader "hello world> ")]
(.. term (writer) (println (str "====> " line)))
(.flush term))))通过lein run,我得到了一个哑巴终端:
> lein run
Jun 02, 2019 11:58:20 AM org.jline.utils.Log logr
WARNING: Unable to create a system terminal, creating a dumb terminal (enable debug logging for more information)
JLine terminal dumb
hello world> hi
====> hi通过uberjar,终端不是哑巴:
> lein uberjar
...
> java -jar target\uberjar\terminal-0.1.0-SNAPSHOT-standalone.jar
JLine terminal windows-vtp
hello world> hi
====> hi发布于 2019-06-04 03:06:35
Leiningen启动自己的JVM来读取project.clj等,然后lein run为您的项目启动一个新的JVM;lein JVM然后委托给您的项目。我怀疑JLine是否正确地检测到它的stdin不是真正的终端,而是来自lein JVM的管道。
如果你不想让lein挡道,你可以使用lein trampoline run。trampoline的工作是预先计算需要完成的所有任务,并将这些任务写入shell脚本,以便在关闭lein JVM后执行。
https://stackoverflow.com/questions/56416242
复制相似问题