NoneLein делает терминал jline3 немым
Я получаю тупой терминал через lein
тогда как я получаю не тупой терминал через уберджар. какой 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
1 ответ
Лейнинген запускает собственную JVM для чтения project.clj и т. Д., А затем lein run
запускает новую JVM для вашего проекта; тогда lein JVM делегирует ваше. Я подозреваю, что JLine правильно определяет, что его стандартный вывод - это не терминал, а канал из lein JVM.
Если вы хотите, чтобы lein убирался с дороги, вы можете использовать lein trampoline run
, Работа trampoline
состоит в том, чтобы предварительно вычислить все задачи, которые необходимо выполнить, и записать их в сценарий оболочки, который будет выполняться после закрытия JVM lein.