Codebase list java-classpath-clojure / 9e70cab
Use both java.class.path and Clojure's URLClassLoader Stuart Sierra 12 years ago
1 changed file(s) with 18 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
1818 clojure.java.classpath
1919 (:require [clojure.java.io :as io])
2020 (:import (java.io File)
21 (java.util.jar JarFile JarEntry)))
21 (java.util.jar JarFile JarEntry)
22 (java.net URL URLClassLoader)))
2223
2324 (set! *warn-on-reflection* true)
2425
3839 (filter #(not (.isDirectory ^JarEntry %))
3940 (enumeration-seq (.entries jar-file)))))
4041
41 (defn classpath
42 "Returns a sequence of File objects of the elements on CLASSPATH."
42 (defn system-classpath
43 "Returns a sequence of File paths from the 'java.class.path' system
44 property."
4345 []
4446 (map #(File. ^String %)
4547 (.split (System/getProperty "java.class.path")
4648 (System/getProperty "path.separator"))))
49
50 (defn clojure-classpath
51 "Returns a sequence of File paths from Clojure's base classloader."
52 []
53 (let [loader (clojure.lang.RT/baseLoader)]
54 (when (instance? URLClassLoader loader)
55 (map #(File. (.getPath ^URL %)) (.getURLs ^URLClassLoader loader)))))
56
57 (defn classpath
58 "Returns a sequence of File objects of the elements on the
59 classpath."
60 []
61 (distinct (concat (clojure-classpath) (system-classpath))))
4762
4863 (defn classpath-directories
4964 "Returns a sequence of File objects for the directories on classpath."