Hi all. I am trying to develop some java code on OSX. I have run into a problem with CLASSPATH. I run bash, so I have a script that I source via " . ~/bin/java_setup.sh". This script does this:
Code:
#!/bin/sh
# BEGIN JAVA CLASSPATH SETUP
JAVA_BASE="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK"
export JAVA_HOME="$JAVA_BASE/Home"
CLASSPATH="."
# TOMCAT
if [ "$CATALINA_HOME" = "" ]; then
CATALINA_HOME="/Library/WebServer/jakarta-tomcat-4.1.18"
CH=$CATALINA_HOME
export CATALINA_HOME
fi
OS_JARS="$JAVA_BASE/Classes"
TOMCAT_JARS="$CH/common/lib/servlet.jar \
$CH/common/lib/velocity.jar \
$CH/common/lib/velocity-dep.jar \
$CH/common/lib/mail.jar"
MY_JARS="$HOME/Library/Java $HOME/Library/Java/Extensions"
javasourcelist="$OS_JARS $MY_JARS $TOMCAT_JARS"
for javasource in $javasourcelist
do
if [ -d $javasource ]; then
#it is a directory
for jarfile in `cd ${javasource} && ls | grep jar`
do
if [ "$CLASSPATH" = "" ]; then
CLASSPATH="${javasource}/${jarfile}"
else
CLASSPATH="${CLASSPATH}:${javasource}/${jarfile}"
fi
done
elif [ -f $javasource ]; then
# it is a file
if [ "$CLASSPATH" = "" ]; then
CLASSPATH="${javasource}"
else
CLASSPATH="${CLASSPATH}:${javasource}"
fi
fi
done
export CLASSPATH
After it runs my classpath looks like this (colons replaced with carriage returns to make it fit on the forum):
Code:
[dshaw@flybook ~/Desktop] echo $CLASSPATH
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/classes.jar
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/i18n.jar
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/sunrsasign.jar
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes/ui.jar
/Users/dshaw/Library/Java/bsh-1.2b6.jar
/Users/dshaw/Library/Java/ftp.jar
/Users/dshaw/Library/Java/xmlizable.jar
/Users/dshaw/Library/Java/Extensions/jconn2.jar
/Users/dshaw/Library/Java/Extensions/oracle.jar
/Users/dshaw/Library/Java/Extensions/pgjdbc2.jar
/Library/WebServer/jakarta-tomcat-4.1.18/common/lib/servlet.jar
/Library/WebServer/jakarta-tomcat-4.1.18/common/lib/velocity.jar
/Library/WebServer/jakarta-tomcat-4.1.18/common/lib/velocity-dep.jar
/Library/WebServer/jakarta-tomcat-4.1.18/common/lib/mail.jar
So it looks right. My test source looks like this:
Code:
[dshaw@flybook ~/Desktop] cat TestException.java
import java.sql.DriverManager;
import java.sql.Connection;
public class TestException
{
Connection _db_conn;
public TestException()
{
try
{
String url = "jdbc:postgresql://localhost:5432/test";
_db_conn = DriverManager.getConnection(url, "postgres", "postgres");
}
catch (Exception e)
{
System.out.println(e);
}
}
public static void main(String[] args)
{
TestException test = new TestException();
}
}
Very simple. Load the jdbc driver for PostgreSQL, and print an exception if it fails. The Postgres driver is jconn2.jar and is in the CLASSPATH above. However, if I run the class, I get:
Code:
[dshaw@flybook ~/Desktop] java TestException
java.sql.SQLException: No suitable driver
Is this a CLASSPATH issue, or something else? Help!