クラスパスの指定

あんまりJavaとか使ったことなかったので、Clojureでクラスパスを指定するところで詰まってしまった。Clojureの公式サイトでは、起動コマンドは

$ java -cp clojure.jar clojure.main

とのことなので、cpオプションのところに使いたいライブラリのパスを指定していけばいいらしい。例えば、clojure-contribとプログラミングClojureのサンプルコード(https://github.com/stuarthalloway/programming-clojure)を読み込むには以下のような起動スクリプトを書く。

#!/bin/sh

CLOJURE_DIR=$HOME/.clojure
CLOJURE_JAR=$CLOJURE_DIR/clojure.jar
CONTRIB_JAR=$CLOJURE_DIR/clojure-contrib.jar
PROGRAMMING_CLOJURE_DIR=$CLOJURE_DIR/programming-clojure

CLASSPATH=$CLASSPATH:$CLOJURE_JAR:$CONTRIB_JAR:$PROGRAMMING_CLOJURE_DIR

java -cp $CLASSPATH clojure.main

Clojureを起動して次のコードを打ち込むことで確認できる。

user=> (use 'clojure.contrib.classpath)
nil
user=> (classpath)
(#<File > #<File /home/masatoi/.clojure/clojure.jar> #<File /home/masatoi/.clojure/clojure-contrib.jar> #<File /home/masatoi/.clojure/programming-clojure>)

swank-clojureでクラスパスを指定する方法はSLIMEでClojureを使うに追記しました。