Setting the CLASSPATH
Yes I'm sorry I'm a newbie. I've probably missed something really obvious but I'm stuck. Can anyone please tell me why java will not use the CLASSPATH when I set it as environment var?
I'm using Mint Maya, JEE6 and JDK 1.7.07
I set my classpath by
CLASSPATH=".:/opt/sqlanywhere12/java/jconn3.jar"
I confirm it is set by
mark@mark-GA-880GM-USB3 ~/jwork/jwork/jdbc $ echo $CLASSPATH
.:/opt/sqlanywhere12/java/jconn3.jar
I then run my test connection program that I 'borrowed' from a blog (listing below) and get. Cause I suspect by java not finding the CLASSPATH
mark@mark-GA-880GM-USB3 ~/jwork/jwork/jdbc $ java ShowConnect
---Preloaded drivers---
No drivers listed as jdbc.drivers property.
The drivers listed as being loaded:
sun.jdbc.odbc.JdbcOdbcDriver@1d35bf2
---Loading driver---
java.lang.ClassNotFoundException: com.sybase.jdbc3.jdbc.SybDriver
The drivers listed as being loaded:
sun.jdbc.odbc.JdbcOdbcDriver@1d35bf2
---Making connection---
java.sql.SQLException: No suitable driver found for jdbc:sybase:Tds:localhost:2638/jobbeat.db
Connection failed.
Exception in thread "main" java.lang.NullPointerException
at ShowConnect.main(ShowConnect.java:33)
However if I run the program with the classpath as a command line parameter then it works fine.
mark@mark-GA-880GM-USB3 ~/jwork/jwork/jdbc $ java -cp .:/opt/sqlanywhere12/java/jconn3.jar ShowConnect
---Preloaded drivers---
No drivers listed as jdbc.drivers property.
The drivers listed as being loaded:
sun.jdbc.odbc.JdbcOdbcDriver@1d35bf2
---Loading driver---
The drivers listed as being loaded:
sun.jdbc.odbc.JdbcOdbcDriver@1d35bf2
com.sybase.jdbc3.jdbc.SybDriver@a8a271
---Making connection---
com.sybase.jdbc3.jdbc.SybConnection@161eccb
Database product name: SQL Anywhere
Database product version: 12.0.1.3759
Driver name: jConnect (TM) for JDBC (TM)
Driver version: jConnect (TM) for JDBC(TM)/6.05(Build 26685)/P/EBF19405/JDK14/Sat Aug 6 21:33:11 2011
Program listing
import java.util.Properties;
import java.util.Enumeration;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.DatabaseMetaData;
public class ShowConnect {
private static final String DRIVER_CLASS_NAME =
"com.sybase.jdbc3.jdbc.SybDriver";
private static final String DATABASE_URL =
"jdbc:sybase:Tds:localhost:2638/userdb.db";
private static final String USERNAME = "admin";
private static final String PASSWORD = "***";
public static void main(String arg[]) {
ShowConnect showcon = new ShowConnect();
System.out.println(" ---Preloaded drivers---");
showcon.listPropertyDrivers();
showcon.listLoadedDrivers();
System.out.println(" ---Loading driver---");
showcon.loadDriver(DRIVER_CLASS_NAME);
showcon.listLoadedDrivers();
System.out.println(" ---Making connection---");
Connection connection = showcon.getConnection(
DATABASE_URL,USERNAME,PASSWORD);
showcon.showConnection(connection);
try {
connection.close();
} catch(SQLException e) {
System.out.println(e);
}
}
public void listPropertyDrivers() {
Properties properties = System.getProperties();
String str = properties.getProperty("jdbc.drivers");
if(str == null)
System.out.println("No drivers listed as jdbc.drivers property.");
else
System.out.println("Property jdbc.drivers: " + str);
}
public void listLoadedDrivers() {
Enumeration enumeration = DriverManager.getDrivers();
if(enumeration.hasMoreElements())
System.out.println("The drivers listed as being loaded:");
else
System.out.println("No drivers listed as being loaded.");
while(enumeration.hasMoreElements())
System.out.println(" " + enumeration.nextElement());
}
public void loadDriver(String driver) {
try {
Class.forName(driver);
} catch(ClassNotFoundException e) {
System.out.println(e);
}
}
public Connection getConnection(String url,String user,String password) {
try {
Connection connection = DriverManager.getConnection(
url,user,password);
return(connection);
} catch(SQLException e) {
System.out.println(e);
}
return(null);
}
public void showConnection(Connection connection) {
if(connection == null) {
System.out.println("Connection failed.");
return;
}
System.out.println(connection);
try {
DatabaseMetaData meta = connection.getMetaData();
System.out.println(" Database product name: " +
meta.getDatabaseProductName());
System.out.println(" Database product version: " +
meta.getDatabaseProductVersion());
System.out.println(" Driver name: " +
meta.getDriverName());
System.out.println(" Driver version: " +
meta.getDriverVersion());
} catch(SQLException e) {
System.out.println(e);
}
}
}
|