The idea of ββclasspath is to hide classes. You can have classes with the same name loaded from different class loaders, you can have the same class in several jars and rely on ordering the class path to choose the right one.
Why do you want to know? If this is for any other reason than debugging / recording, you are on dangerous ground and should be tested carefully.
It is actually perfectly reasonable if the classes do not have a jar file. This can happen in java for any classes generated at runtime (think proxies).
In clojure, a simple example would be as shown in the replication session below ... You will see that the @mikera clause works fine for clojure.lang.Atom , which is a built-in class. But when you use deftype to create your own type, clojure creates the class and has no place ...
user> (prn (-> clojure.lang.Atom (.getProtectionDomain) (.getCodeSource) (.getLocation))) #<URL file:/workspace/clj-scratch/lib/clojure-1.3.0.jar> nil user> (deftype Foo []) user.Foo user> (prn (-> (Foo.) (.getClass) (.getProtectionDomain) (.getCodeSource) (.getLocation))) nil nil user>
sw1nn
source share