First, a disclaimer - I don't have any problem with the idea of the classpath in Java. In principle, it's pretty similar to Python's sys.path. And jar files are much like Python having zip files on sys.path. So I'm familiar with the idea.
Where I struggle is with the practicalities of managing the classpath. >From what I can tell, there is no way of modifying the classpath from a running Java/Clojure program (barring use of a custom classloader which sounds like deep magic). So, assuming that is right, I need to list my dependencies in advance, when I start the JVM (either by setting the CLASSPATH environment variable, or with the -classpath argument). Generally, I avoid using "global" environment variables like CLASSPATH (except if they are locally set in a wrapper script), so I guess that I have the following options for my Clojure applications: * Use something like lein uberjar to wrap all my dependencies up in one file * Create an application-specific wrapper, which sets CLASSPATH (or uses -cp) and runs my application I have personal reservations about both of these options (I won't elaborate, to avoid boring people with my prejudices - ask if you really want to know) so I guess my question would be - is there another option I have missed? Python doesn't have these issues because (a) conventionally, dependencies are installed into the site-packages directory which is on the standard sys.path - it appears to me that the JVM doesn't have such an "always available" install location, and (b) for special cases sys.path can be manipulated at runtime (as noted above, the JVM doesn't really have this option). One further question - does having a lot of entries on CLASSPATH slow down JVM code (either at startup time, or in terms of slowing down runtime class loading)? Essentially, is there a cost to including things like clojure-contrib "just in case"? (I don't imagine that the cost would be significant for just one such case, but I could imagine that if the practice were to become common, it wouldn't be long before there were many extra entries, not just one). I appreciate that this question is only tangentially Clojure-related. If there is a better forum to discuss this type of question, please feel free to direct me there. Thanks, Paul. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en