Когда следующий образец программы Clojure упакован в автономный uberjar (через boot-clj), выполнение java -jar app.jar
ведет себя иначе, чем вызов функции -main
из отладочной реплики.
(ns bat-man.core
(:require [clojure.java.shell :refer [sh]])
(:gen-class))
(defn -main [& args]
(prn (sh "echo" "test")))
Что происходит, так это то, что результат {:exit 0, :out "test\n", :err ""}
печатается сразу в stdout
, но после этого требуется некоторое время, может быть, полминуты, пока программа не выйдет.
Это не тот случай, когда программа модифицируется, чтобы просто печатать некоторый вывод без вызова sh
.
В отчете разработки все как положено, функция завершается сразу после печати. Как это можно объяснить/исправить?
Обновление: вот отрывок из ps aux
, сделанный в то время, когда программа не торопится завершать работу:
unsername 8730 5.4 2.0 3643576 80052 pts/8 Sl+ 13:25 0:01 java -jar /path/to/app.jar