Leiningen uberjar"空"运行时间

Mas*_*sse 6 clojure

在使用leiningen创建一个uberjar之后,运行该java -jar foo-uberjar.jar程序的jar 运行正常,最后一行代码执行得非常快,但程序在关闭之前会挂起大约一分钟.这是什么原因?

(ns redditwallpaper.core
  (:gen-class)
  (:require [clojure.contrib.duck-streams :as duck]
            [clojure.java [io :as io] [shell :as shell]]
            [clojure.string :as string]
            [clojure.contrib.json :as json])
  (:import (java.util Random)))

(defn filename [uri]
  (last (string/split uri #"/")))
(defn over_18 [x]
  (:over_18 x))
(defn posts [x]
  (map :data (get-in x [:data :children])))
(defn plain-image [x]
  (re-find #"(.jpg|.png)$" (:url x)))
(def url "http://www.reddit.com/r/wallpaper.json")
(def wallpaperjson (json/read-json (slurp url)))
(defn copy [uri fname]
  (with-open [in (io/input-stream uri)
              out (io/output-stream fname)]
    (.write out (duck/to-byte-array in))))
(defn randrange [n]
  (.nextInt (Random.) n))
(defn randitem [xs]
  (let [n (count xs)]
    (nth xs (randrange n))))
(defn set-background [file]
  (shell/sh "feh" "--bg-scale" file))
(defn -main [& args]
  (let [posts (posts wallpaperjson)
        safe (filter (complement over_18) posts)
        images (filter plain-image safe)
        image (:url (randitem images))
        fname (filename image)]
    (do
      (println (format "Downloading '%s'" image))
      (copy image fname)
      (println (format "Setting background image to '%s'" fname))
      (set-background fname)
      (println "Done"))))
Run Code Online (Sandbox Code Playgroud)

java -jar redditwallpaper-0.0.1-standalone.jar 2.71s user 0.34s system 4% cpu 1:03.15 total

Ham*_*aya 2

尝试添加,

(shutdown-agents)
Run Code Online (Sandbox Code Playgroud)

当您准备退出时。