RSS Feed for This PostCurrent Article

Unix: Shell Script to build CLASSPATH Dynamically

This is the script I used before for my legacy Java applications running on non-JDK 1.6 platform. In JDK1.6+, we can use a wildcard to include all jars in a directory. E.g.

java -classpath C:\jar_dir\*
#!/bin/sh

buildClassPath() {
        jar_dir=$1
        if [ $# -ne 1 ]; then
                echo "Jar directory must be specified."
                exit 1
        fi
        class_path=
        c=1
        for i in `ls $jar_dir/*.jar`
        do
                if [ "$c" -eq "1" ]; then
                        class_path=${i}
                        c=2
                else
                        class_path=${class_path}:${i}
                fi
        done
        echo $class_path
        #return $class_path
}

CP=`buildClassPath /tmp/lib`
echo $CP

A similiar output as below

/tmp/lib/log4j.jar:/tmp/lib/commons-io.jar:
/tmp/lib/commons-http-client.jar

A good reference can be found here.


Trackback URL


RSS Feed for This Post1 Comment(s)

  1. Trevor | Sep 11, 2008 | Reply

    There’s no need to handle a directory containing a single file as a special case.

    Also, there’s a simpler variation here:

    http://www.devdaily.com/blog/post/linux-unix/dynamically-build-java-classpath-in-bourne-shell-script/

Sorry, comments for this entry are closed at this time.