Skip to content

Instantly share code, notes, and snippets.

@kohyama kohyama/dce.clj

Created Jul 30, 2012
What would you like to do?
Add paths of sources and classes of your program, compile and execute it. Do them all at runtime.
(ns dce.core
(:import clojure.lang.DynamicClassLoader)
(defn -main [abs-path target-ns & args]
(let [ccl (.getContextClassLoader (Thread/currentThread))
dcl (if (instance? DynamicClassLoader ccl) ccl
(let [l (DynamicClassLoader. ccl)]
(.setContextClassLoader (Thread/currentThread) l)
(.addURL dcl (URL. (str "file://" abs-path "/src/")))
(.addURL dcl (URL. (str "file://" abs-path "/classes/")))
(binding [*compile-path* (str abs-path "/classes")]
(compile (symbol target-ns)))
(def f (future (apply (resolve (symbol (str target-ns "/-main"))) args)))
(Thread/sleep 5000)
(future-cancel f)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.