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
-~----------~----~----~----~------~----~------~--~---

Reply via email to