Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 获取uberjar中嵌入资源的列表_Clojure_Leiningen - Fatal编程技术网

Clojure 获取uberjar中嵌入资源的列表

Clojure 获取uberjar中嵌入资源的列表,clojure,leiningen,Clojure,Leiningen,我正在与leiningen和Clojure合作创建一个uberjar,这样我就有了一个用于部署的文件。我还使用leiningen的默认资源路径嵌入了一些静态文件,它们的名称和数量因版本而异。有没有一种惯用的方法从Clojure获取嵌入式资源列表?我知道我可以使用clojure.java.io/resource访问一个已知的文件名,但是如何获取文件列表?下面的列表资源函数返回jar中路径中的所有文件的列表running jar保存当前运行的jar的路径(如果它实际上是一个jar) (def ^:p

我正在与leiningen和Clojure合作创建一个uberjar,这样我就有了一个用于部署的文件。我还使用leiningen的默认资源路径嵌入了一些静态文件,它们的名称和数量因版本而异。有没有一种惯用的方法从Clojure获取嵌入式资源列表?我知道我可以使用
clojure.java.io/resource
访问一个已知的文件名,但是如何获取文件列表?

下面的
列表资源
函数返回jar中
路径
中的所有文件的列表
running jar
保存当前运行的jar的路径(如果它实际上是一个jar)

(def ^:private running-jar 
  "Resolves the path to the current running jar file."
  (-> :keyword class (.. getProtectionDomain getCodeSource getLocation getPath)))

(defn list-resources [path]
  (let [jar (java.util.jar.JarFile. path)  
        entries (.entries jar)]
    (loop [result  []]
      (if (.hasMoreElements entries)
        (recur (conj result (.. entries nextElement getName)))
        result))))

(take 10 (list-resources running-jar))

太好了,谢谢。我们最终完全放弃了这个想法,在没有嵌入式资源的情况下做了一些事情。这就是说,我事先测试了这个,结果非常好。再次感谢。