Обсуждение: I just can't use the org.postgresql.Driver class... Please help!
Hi everybody.
Thi is my first time trying to use postgresql jdbc and I'm very frustrated.
This is my env:
C:\>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)
I have these files in the same directory:
Simple source file (JasperReportsTest.java):
public class JasperReportsTest
{
public static void main(String[] args)
{
Class.forName("org.postgresql.Driver");
}
}
Simple batch file to compile it (JasperReportsTest.bat):
set CLASSPATH=postgresql-8.1-405.jdbc3.jar
javac JasperReportsTest.java > javac.log 2>&1
Simple log file making me crazy (javac.log):
JasperReportsTest.java:6: unreported exception
java.lang.ClassNotFoundException; must be caught or declared to be
thrown
Class.forName("org.postgresql.Driver");
^
1 error
Obviously the file postgresql-8.1-405.jdbc3.jar is there...
Why does it say ClassNotFound if the file is there? Can anyone help me?
Thank you : )
--
Kamal
On Wednesday 05 April 2006 14:53, Kamal wrote:
> Simple log file making me crazy (javac.log):
>
> JasperReportsTest.java:6: unreported exception
> java.lang.ClassNotFoundException; must be caught or declared to be
> thrown
> Class.forName("org.postgresql.Driver");
> ^
> 1 error
>
> Obviously the file postgresql-8.1-405.jdbc3.jar is there...
>
> Why does it say ClassNotFound if the file is there? Can anyone help me?
> Thank you : )
Well, the class is there at *compile time*. What this is telling you is that
at *runtime* Class.forName() will fail with that exception if the class is
not available *at runtime*. You need to catch the exception, like so:
try {
Class.forName( "org.postgresql.Driver" );
} catch ( ClassNotFoundException cnfe ) {
System.err.println( "driver not found!" );
}
I would recommend an introductory Java text.
jan
--
--------------------------------------------------------------
Jan de Visser jdevisser@digitalfairway.com
Baruk Khazad! Khazad ai-menu!
--------------------------------------------------------------
Kamal wrote:
> Hi everybody.
> Thi is my first time trying to use postgresql jdbc and I'm very
> frustrated.
>
> This is my env:
>
> C:\>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)
>
> I have these files in the same directory:
>
> Simple source file (JasperReportsTest.java):
>
> public class JasperReportsTest
> {
> public static void main(String[] args)
> {
>
> Class.forName("org.postgresql.Driver");
>
> }
> }
>
> Simple batch file to compile it (JasperReportsTest.bat):
>
> set CLASSPATH=postgresql-8.1-405.jdbc3.jar
> javac JasperReportsTest.java > javac.log 2>&1
>
>
> Simple log file making me crazy (javac.log):
>
> JasperReportsTest.java:6: unreported exception
> java.lang.ClassNotFoundException; must be caught or declared to be
> thrown Class.forName("org.postgresql.Driver"); ^
> 1 error
>
> Obviously the file postgresql-8.1-405.jdbc3.jar is there...
>
> Why does it say ClassNotFound if the file is there? Can anyone help
> me? Thank you : )
Try providing it with a path to the jar file instead of just the jar
file name: ./postgresql-8.1-405.jdbc3.jar. Might as well add the
current directory to that so it doesn't complain about the source file
you're trying to compile.
--
Guy Rouillier
You must catch an Exception that *might* be thrown, in this case it's
ClassNotFoundException.
Change:
public static void main(String[] args)
{
Class.forName("org.postgresql.Driver");
}
to
public static void main(String[] args)
{
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e ){
}
}
This way it'll compile. This has nothing to do with JDBC, this is
basic Java stuff.