;; For cases when 'import' does not do it for you, i.e. "live-coding"
;; You can use the DynamicClassLoader, ClassReader and the Resolver.
(def dcl (clojure.lang.DynamicClassLoader.))
(defn dynamically-load-class!
[class-loader class-name]
(let [class-reader (clojure.asm.ClassReader. class-name)]
(when class-reader
(let [bytes (.-b class-reader)]
(.defineClass class-loader
class-name
bytes
"")))))
(dynamically-load-class! dcl "java.lang.Long")
(dynamically-load-class! dcl 'org.joda.time.DateTime)
;; From that point the dynamically loaded class can be
;; used by the Reflector to invoke constructors, methods and to get fields.