Обсуждение: java.sql.SQLException: No suitable driver

Поиск
Список
Период
Сортировка

java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.<init>(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
 
Thanks in advance.

Re: java.sql.SQLException: No suitable driver

От
Dave Cramer
Дата:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
 
Thanks in advance.

Re: java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Well, it gives me:

java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.<init>(Database.java:16)
        at Gateway.main(Gateway.java:19)

But I think you're right... But my problem is, that if I try to run it with the classpath flag, and also the classpath environment vartiable, it fails.
The path is correct.

I believe that I have overseen something, but I have looked over the setup a dusin of times now, and I can't spot it.


Dave Cramer wrote:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
Thanks in advance.


Re: java.sql.SQLException: No suitable driver

От
Dave Cramer
Дата:
Mads,

What is your classpath.

inevitably this is the problem.

Dave
On 27-Apr-06, at 9:31 AM, Mads N. Vestergaard wrote:

Well, it gives me:

java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.<init>(Database.java:16)
        at Gateway.main(Gateway.java:19)

But I think you're right... But my problem is, that if I try to run it with the classpath flag, and also the classpath environment vartiable, it fails.
The path is correct.

I believe that I have overseen something, but I have looked over the setup a dusin of times now, and I can't spot it.


Dave Cramer wrote:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
Thanks in advance.



Re: java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Hi Dave,
My Classpath is:
 
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar

And the file exists:
hostname:~$ ls -la /usr/share/java/pg74.216.jdbc3.jar 
-rwxr-xr-x  1 root root 210371 2006-04-27 09:52 /usr/share/java/pg74.216.jdbc3.jar

Dave Cramer wrote:
Mads,

What is your classpath.

inevitably this is the problem.

Dave
On 27-Apr-06, at 9:31 AM, Mads N. Vestergaard wrote:

Well, it gives me:

java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.<init>(Database.java:16)
        at Gateway.main(Gateway.java:19)

But I think you're right... But my problem is, that if I try to run it with the classpath flag, and also the classpath environment vartiable, it fails.
The path is correct.

I believe that I have overseen something, but I have looked over the setup a dusin of times now, and I can't spot it.


Dave Cramer wrote:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
Thanks in advance.




Re: java.sql.SQLException: No suitable driver

От
Dave Cramer
Дата:
Mads,

And how do you execute the program ? One thing that can help is to run java -verbose to see what it is doing.

Dave
On 27-Apr-06, at 9:46 AM, Mads N. Vestergaard wrote:

Hi Dave,
My Classpath is:
 
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar

And the file exists:
hostname:~$ ls -la /usr/share/java/pg74.216.jdbc3.jar 
-rwxr-xr-x  1 root root 210371 2006-04-27 09:52 /usr/share/java/pg74.216.jdbc3.jar

Dave Cramer wrote:
Mads,

What is your classpath.

inevitably this is the problem.

Dave
On 27-Apr-06, at 9:31 AM, Mads N. Vestergaard wrote:

Well, it gives me:

java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.<init>(Database.java:16)
        at Gateway.main(Gateway.java:19)

But I think you're right... But my problem is, that if I try to run it with the classpath flag, and also the classpath environment vartiable, it fails.
The path is correct.

I believe that I have overseen something, but I have looked over the setup a dusin of times now, and I can't spot it.


Dave Cramer wrote:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
Thanks in advance.





Re: java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Hi,

Well it gives me a lot of debug information. http://timmy.dk/debug.txt .

I ran:

hostname:~$ java -verbose -cp /usr/share/java/pg74.216.jdbc3.jar -jar program.jar

Dave Cramer wrote:
Mads,

And how do you execute the program ? One thing that can help is to run java -verbose to see what it is doing.

Dave
On 27-Apr-06, at 9:46 AM, Mads N. Vestergaard wrote:

Hi Dave,
My Classpath is:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar

And the file exists:
hostname:~$ ls -la /usr/share/java/pg74.216.jdbc3.jar 
-rwxr-xr-x  1 root root 210371 2006-04-27 09:52 /usr/share/java/pg74.216.jdbc3.jar

Dave Cramer wrote:
Mads,

What is your classpath.

inevitably this is the problem.

Dave
On 27-Apr-06, at 9:31 AM, Mads N. Vestergaard wrote:

Well, it gives me:

java.lang.ClassNotFoundException: org.postgresql.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.<init>(Database.java:16)
        at Gateway.main(Gateway.java:19)

But I think you're right... But my problem is, that if I try to run it with the classpath flag, and also the classpath environment vartiable, it fails.
The path is correct.

I believe that I have overseen something, but I have looked over the setup a dusin of times now, and I can't spot it.


Dave Cramer wrote:
5 will get you 10 that your class path isn't setup correctly. Try adding ex.printStackTrace() to the catch handler for Class.forName

Dave
On 27-Apr-06, at 8:19 AM, Mads N. Vestergaard wrote:

Hi Everybody, when I try to run my program, I get the following error message:
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at Database.(Database.java:20)
        at Gateway.main(Gateway.java:19)
Exception in thread "main" java.lang.NullPointerException
        at Database.SQLget(Database.java:71)
        at Gateway.main(Gateway.java:33)
My connect code is:
try {
    Class.forName("org.postgresql.Driver");
      }catch (ClassNotFoundException e){
      }
      try {
        db = DriverManager.getConnection("jdbc:postgresql://hostname/" + dbName,"bruger","kode");
      } catch (SQLException e) {
        e.printStackTrace();
      }
On my system I have putted the jdbc driver for postgres into the classpath:
hostname:~$ echo $CLASSPATH
/usr/share/java/pg74.216.jdbc3.jar
Java version:
hostname:~$ java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
As far as I know it should work since, it is correct in the classpath. I have also tried with other postgres jdbc drivers. In my IDE(Eclipse), it works fine, but on my production server it gives the error. 
I've also tried to run the program with the -classpath flag, with the same result.
Have I simply forgotten something, or is there something seriously wrong?
Thanks in advance.






Re: java.sql.SQLException: No suitable driver

От
Oliver Jowett
Дата:
Mads N. Vestergaard wrote:

> hostname:~$ java -verbose -cp /usr/share/java/pg74.216.jdbc3.jar -jar
> program.jar
>

-jar causes the JVM to completely ignore any additional classpath you
specify.

Instead, try:

java -cp /usr/share/java/pg74.216.jdbc3.jar:program.jar ProgramMainClass

-O

Re: java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Hi Aliver,

there isn't any conditional files in the environment variable CLASSPATH,
and the program runs fine, it just can't connect to the database.


Oliver Jowett wrote:
> Mads N. Vestergaard wrote:
>
>> hostname:~$ java -verbose -cp /usr/share/java/pg74.216.jdbc3.jar -jar
>> program.jar
>>
>
> -jar causes the JVM to completely ignore any additional classpath you
> specify.
>
> Instead, try:
>
> java -cp /usr/share/java/pg74.216.jdbc3.jar:program.jar ProgramMainClass
>
> -O



Re: java.sql.SQLException: No suitable driver

От
Oliver Jowett
Дата:
Mads N. Vestergaard wrote:
> Hi Aliver,
>
> there isn't any conditional files in the environment variable CLASSPATH,
> and the program runs fine, it just can't connect to the database.

I am talking about both the CLASSPATH environment variable and the -cp
command line argument. In my experience, if you specify -jar, both are
ignored and classes are only loaded from the standard locations, and the
single jarfile parameter given to -jar ("program.jar" in your case).

Have you tried the command line I suggested?

>> java -cp /usr/share/java/pg74.216.jdbc3.jar:program.jar ProgramMainClass

Please try this and let us know if it works.

I would also suggest that silently ignoring ClassNotFoundException, as
the code you originally posted does, is a Really Bad Idea. That code is
masking the real source of the error: namely, that the driver classes
are *not* in your classpath.

-O

Re: java.sql.SQLException: No suitable driver

От
"Mads N. Vestergaard"
Дата:
Hi Oliver...

That seems to work just perfectly....


Oliver Jowett wrote:
> Mads N. Vestergaard wrote:
>> Hi Aliver,
>>
>> there isn't any conditional files in the environment variable CLASSPATH,
>> and the program runs fine, it just can't connect to the database.
>
> I am talking about both the CLASSPATH environment variable and the -cp 
> command line argument. In my experience, if you specify -jar, both are 
> ignored and classes are only loaded from the standard locations, and 
> the single jarfile parameter given to -jar ("program.jar" in your case).
>
> Have you tried the command line I suggested?
>
>>> java -cp /usr/share/java/pg74.216.jdbc3.jar:program.jar 
>>> ProgramMainClass
>
> Please try this and let us know if it works.
>
> I would also suggest that silently ignoring ClassNotFoundException, as 
> the code you originally posted does, is a Really Bad Idea. That code 
> is masking the real source of the error: namely, that the driver 
> classes are *not* in your classpath.
>
> -O
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq