在使用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
归档时间: |
|
查看次数: |
389 次 |
最近记录: |