当以下Clojure示例程序打包到独立的uberjar中时(通过boot-clj),data: {myObject: JSON.stringify($(form).serializeObject())},
的执行与在开发repl中调用;with sortorder
as(
select name,age,min(col1)-1 as mincol
from @test_names t
join
@test_names_details t1
on t.id=t1.test_names_id
group by name,age
)
select * from sortorder
union all
select cast(col1 as varchar(5)),cast(col2 as varchar(5)),cast(col3 as varchar(5)) from @test_names_details
order by mincol
函数的行为不同。
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
答案 0 :(得分:3)
clojure.java.shell/sh
在幕后使用future
,因此您需要调用(shutdown-agents)
来关闭后台线程。