Exception in thread "main" clojure.lang.LispReader$ReaderException: java.lang.NumberFormatException: Invalid number: 2009-09-14
I decided to work around this by extending my 'clj' starter script. I added a --pom switch which tells the script to build the classpath using the pom file in the current directory. It makes use of the build-classpath target of the maven-dependency-plugin. So now at work I can start up a Swank server simply by typing:
clj --pom "c:\dev\nwalex.com\clojure-scripts\start-swank.clj"
I have this aliased to 'swank' in my .aliases file in Cygwin.
Anyway, here's the full script:
#!/bin/bash
function init_classpath {
# set up the classpath dynamically. Note this includes the jline jar
CLASSPATH=""
for jarfile in `ls -l ~/.clojure-classpath/ | pcol 11`; do
JAR=`cygpath --windows $jarfile`
CLASSPATH="$CLASSPATH;$JAR"
done
}
function init_classpath_from_pom {
echo "Initializing classpath from pom.xml..."
# create the classpath file
mvn dependency:build-classpath -Dmdep.outputFile=classpath 2>&1 > /dev/null
# store it and remove the file
CLASSPATH=`more classpath`
rm classpath
# also add everything under the clojure source directories
CLASSPATH="$CLASSPATH;./src/main/clojure;./src/test/clojure"
}
if [ $# -eq 0 ] ; then
init_classpath
stty -icanon min 1 -echo
java -Djline.terminal=jline.UnixTerminal -cp $CLASSPATH jline.ConsoleRunner clojure.main
else
TMPFILE=""
while [ $# -gt 0 ] ; do
case "$1" in
--pom)
init_classpath_from_pom
;;
-cp|--classpath)
CLASSPATH="$CLASSPATH;$2"
shift
;;
-e)
TMPFILE="/tmp/$(basename $0).$$.tmp"
/bin/echo $2 > $TMPFILE
ARGS=$TMPFILE
break
;;
*)
ARGS="$ARGS $1"
;;
esac
shift
done
if [ "$CLASSPATH" == "" ] ; then
init_classpath
fi
if [ "$ARGS" != "" ]; then
ARGS=`cygpath --windows $ARGS`
fi
java -cp "$CLASSPATH" clojure.main $ARGS
if [ "$TMPFILE" != "" ] ; then
rm $TMPFILE
fi
fi
start-swank.clj is simply:(require 'swank.swank) (swank.swank/start-server "nul" :encoding "utf-8" :port 4005)Update 1: Updated script to include the src/main/clojure and src/test/clojure directories on the classpath.
0 comments:
Post a Comment