Easy set up for Clojure on unixoid operating systems.
- Mac OS X 10.5+
- Linux (tested on Ubuntu 9.10)
- Windows (Cygwin)
For a while ClojureX tried to be everything for all people: it downloaded clojure, clojure-contrib and support packages for various editors, compiled and configured them. I now decided to give up on this one-size-fits-all approach and instead focus on always providing the latest stable versions of clojure and clojure-contrib as well as a full-featured "clj" script.
Set Up Instructions
$ git clone git://github.com/citizen428/ClojureX.git $ cd ClojureX
To create a symlink for the
clj script in
/usr/local/bin you can run the following command:
If you prefer to create the link somewhere else, you can do it manually like this:
$ ln -s <full path to this project>/clj <destination path>/clj
clj script expects
$JAVA_HOME in its environment. If
$JAVA_HOME is not set, it will attempt to determine it for you. If for some reason you cannot provide
$JAVA_HOME, you can set the
$JAVA variable at the top of the
clj command can be used to open an interactive session:
$ clj Clojure 1.1.0-master-SNAPSHOT user=>
It can be used to run a script:
$ clj test.clj Hello, Clojure!
Any options following the script will be passed as arguments to the script:
$ clj test.clj a b "c d" Hello, Clojure! Arg #1: a Arg #2: b Arg #3: c d
Use a shebang line at the start of your script to make a Clojure file executable:
Of course, you'll also need to enable the script's execute mode (e.g.,
chmod u+x <scriptname>) to run it this way.
You can also open a debug port using the
$ clj -d 1234 test.clj
clj script supports all of
clojure.main's command-line options. For example, to evaluate an expression, use
--eval. The script's value will be sent to standard output:
$ clj -e "(take 5 (iterate inc 0))" (0 1 2 3 4) $ clj --eval '(count "Hello, Clojure")' 14
--init option to evaluate a clojure script:
$ clj -i test.clj Hello, Clojure
You can intermix the eval and init options multiple times, and they will be evaluated in the specified order:
$ clj -e '"Before test"' -i test.clj -e '"After test"' "Before test" Hello, Clojure! "After test"
clj script will exit immediate after processing all the init/eval options. Use
--repl to instead start an interactive session.
$ clj -e '"Starting my own REPL"' -r "Starting my own REPL" user=>
clj supports all of the java command line options to configure the JVM.
$ clj -d64 -Xms4g -Xmx4g -verbose:gc -i wf2.clj -e '(wf/wf-atoms "O.all")'
To see a full description of
clj command-line options, pass it
$ clj --help Usage: clj ...
Working with Clojure
To add extra jar files to Clojure's classpath on a project-by-project basis, just create a
.clojure file in the project's directory. Here's an example:
If your project directory is
~/code/clojure/cafe, you can add the Grinder and Frother jars from the
~/code/clojure/cafe/lib directory by putting their relative paths, separated by a colon, into the
$ cd ~/code/clojure/cafe $ echo "lib/grinder.jar:lib/frother.jar" > .clojure
You can also list jars one per line in the .clojure file, like so:
$ cd ~/code/clojure/cafe $ ls -1 lib/*.jar > .clojure
- Add scripts to work with Clojure projects after installation
Scott Haug for lots of new features for the clj script
Paul Rosania for adding Cygwin support
Dave Barker for adding debugging support (-d)
Mark Reid on which Carl's work was based
Tim Riddel from whom I stole the contents of the .emacs file