uberjar内部的spwaning过程出现问题

时间:2016-08-18 11:23:03

标签: java clojure process uberjar

当以下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

1 个答案:

答案 0 :(得分:3)

clojure.java.shell/sh在幕后使用future,因此您需要调用(shutdown-agents)来关闭后台线程。