Note that since JDK 1.6, it is possible to use the * wildcard in classpath items to embed all the jars in a directory at once.
So with proper use of links in a "root" directory containing a bunch of jars, it's possible to shorten the classpath to DIR/*:classes:src BTW, java.ext.dirs' semantics is to provide directories to the JVM for JDK extensions implementing JDK's APIs. (http://java.sun.com/javase/6/ docs/technotes/guides/extensions/spec.html) It does not seem appropriate to me to abuse java.ext.dirs to put in it each an every jar or class directory one may want to use in its application ? HTH, -- Laurent On Jan 4, 6:59 pm, "Stephen C. Gilardi" <squee...@mac.com> wrote: > The "java.ext.dirs" System property provides a very convenient way to > set up and maintain a Classpath for Clojure REPLs. The property can be > set from the command line used to launch Clojure (typically within a > launcher script). Its value is a list of directories whose *contents* > will be the Classpath roots for Clojure. > > In my case, I set the value of java.ext.dirs to a list of just one > directory. That directory contains (relative) symbolic links to all > the Jar files and directories I want Clojure to use as its Classpath. > > As a concrete example, here's what I have in that directory: > > clojure-contrib.classes -> ../../clojure-contrib/classes > clojure-contrib.src -> ../../clojure-contrib/src > clojure.jar -> ../../clojure/clojure.jar > derby.jar -> ../javadb/lib/derby.jar > etc -> ../../../clj/etc > itext-2.0.6.jar -> ../jfreechart/lib/itext-2.0.6.jar > jcommon-1.0.12.jar -> ../jfreechart/lib/jcommon-1.0.12.jar > jfreechart-1.0.9.jar -> ../jfreechart/lib/jfreechart-1.0.9.jar > jsr166y.jar -> ../jsr166y/jsr166y.jar > local -> ../../../clj/local > miglayout-3.6-sources.jar -> ../miglayout/miglayout-3.6-sources.jar > miglayout-3.6-swing.jar -> ../miglayout/miglayout-3.6-swing.jar > > I've enclosed the bash script I'm currently using the launch Clojure. > The one required environment variable is CLOJURE_DIRS which I set to > the directory containing the links above. I like how simple the script > is and how easy it is to manage which jars and directories are > available to Clojure REPLs using this method. > > --Steve > > (note: using this with clojure.contrib.repl-ln requires revision 337 > (of today) or later) > > #!/bin/bash > > # clj: Launches a Clojure REPL with command line arguments > # > # Environment variables: > # > # Required: > # > # CLOJURE_DIRS A list of paths to directories containing (either > directly > # or via symbolic links) the jar files and directories > that > # Clojure will use as its Classpath. The paths are > separated > # by File.pathSeparatorChar (: on UNIX). > # > # Optional: > # > # CLOJURE_MAIN The Java class to launch > # default: clojure.main > # example: clojure.contrib.repl_ln > # > # CLOJURE_OPTS Java options for this REPL's JVM instance > # default: > # example:"-Xms32M -Xmx128M -server" > # > # CLOJURE_INIT Path to an init file to run, an @ prefix specifies a > # classpath-relative path. > # default: > # example:"@init.clj" > > set -o errexit > set -o nounset > #set -o xtrace > > JAVA=java > OPTS=${CLOJURE_OPTS:-} > DIRS="-Djava.ext.dirs=${CLOJURE_DIRS}" > MAIN=${CLOJURE_MAIN:-clojure.main} > INIT=${CLOJURE_INIT:+--init ${CLOJURE_INIT}} > REPL=--repl > > exec $JAVA $OPTS $DIRS $MAIN $INIT $REPL $@ > > smime.p7s > 3KViewDownload --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---