Обсуждение: 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.