Looks like it is a bug in Clojure.
Create foo.clj:
(ns foo)
(let []
(defn foo [] :foo))
Then call foo from REPL:
$ java -cp .:clojure-1.3.0-alpha6.jar clojure.main
Clojure 1.3.0-alpha6
user=> (use 'foo)
nil
user=> (foo)
ClassNotFoundException foo$eval9$foo__10 java.lang.Class.forName0
(Class.java:-2)
But it works if foo.clj is AOT-compiled before starting REPL:
$ java -cp .:clojure-1.3.0-alpha6.jar -Dclojure.compile.path=.
clojure.lang.Compile foo
Compiling foo to .
$ java -cp .:clojure-1.3.0-alpha6.jar clojure.main
Clojure 1.3.0-alpha6
user=> (use 'foo)
nil
user=> (foo)
:foo
This bug also seems to prevent swank-clojure from working with
clojure-1.3.0-alpha6 unless swank-clojure is AOT-compiled.
>
https://github.com/clojure/clojure/commit/71930b6b6537a796cdf13c4ffa7...
>
> Regards,
> - Feng