On Feb 18, 7:49 pm, mikel <[email protected]> wrote:
> (I assume there must be something simple I'm not noticing about how to
> set up my classpath properly).
An attempt to make things clear...
There are two directories involved in gen-class compilation:
1. your sources dir
2. your compiled files dir, which is set in the Java system property
"clojure.compile.path".
The compiled dir must exist; Clojure will not create it.
BOTH dirs must be on the classpath, like this:
java \
-cp clojure.jar:/your/classes/dir:/your/sources/dir \
-Dclojure.compile.path=/your/classes/dir \
clojure.main
Since your namespace is "xg.gf", there should be a file named
/your/sources/dir/xg/gf.clj
However, the "standard" way to use gen-class is to have a namespace
with the same name as the resulting Java class, like this:
In the file "/your/sources/dir/xg/gf/GenericFunction.clj":
(ns xg.gf.GenericFunction
(:gen-class :extends clojure.lang.AFn))
Now (compile 'xg.gf.GenericFunction) will generate a Java class named
"xg.gf.GenericFunction". When THAT class is loaded later on, it will
use the functions defined in the Clojure namespace
"xg.gf.GenericFunction".
It's important to remember that gen-class really only generates a stub
class, which dynamically loads a Clojure namespace (from source or
compiled) and uses the definitions from that namespace.
-Stuart Sierra
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---