首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >lein导致jline3终端成为哑巴

lein导致jline3终端成为哑巴
EN

Stack Overflow用户
提问于 2019-06-02 23:06:27
回答 1查看 303关注 0票数 2

我通过lein获得了一个哑终端,而我通过uberjar获得了一个非哑终端。lein正在做什么来导致这个问题,以及如何修复它?这是在Win 10终端上发生的

我的项目依赖关系:

代码语言:javascript
运行
复制
:dependencies [[org.clojure/clojure "1.9.0"]
               [org.jline/jline "3.11.0"]
               [org.fusesource.jansi/jansi "1.18"]]

主要功能:

代码语言:javascript
运行
复制
(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,我得到了一个哑巴终端:

代码语言:javascript
运行
复制
> 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,终端不是哑巴:

代码语言:javascript
运行
复制
> lein uberjar
...

> java -jar target\uberjar\terminal-0.1.0-SNAPSHOT-standalone.jar
JLine terminal windows-vtp
hello world> hi
====> hi
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-04 03:06:35

Leiningen启动自己的JVM来读取project.clj等,然后lein run为您的项目启动一个新的JVM;lein JVM然后委托给您的项目。我怀疑JLine是否正确地检测到它的stdin不是真正的终端,而是来自lein JVM的管道。

如果你不想让lein挡道,你可以使用lein trampoline runtrampoline的工作是预先计算需要完成的所有任务,并将这些任务写入shell脚本,以便在关闭lein JVM后执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56416242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档