Toon posts:

[Java + JDBC] Probleem met PostgreSQL JDBC driver

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig om (met Netbeans 5.0) een Java applicatie te maken, waarin verbinding wordt gemaakt naar een PostgreSQL database.
De Postgres JDBC driver heb ik gedownload en naar de JDK classpath gekopieerd.

edwin@localhost ~/projecten/LedenAdministratie/build/classes $ export | grep CLASSPATH
declare -x CLASSPATH="/opt/sun-jre-bin-1.5.0.06/lib/ext/:."

edwin@localhost ~ $ locate postgresql-8.1-405.jdbc3.jar
/opt/sun-jre-bin-1.5.0.06/lib/ext/postgresql-8.1-405.jdbc3.jar

Als in het programma een verbinding naar de database wordt gemaakt, verschijnt deze melding in de debug console:

java.lang.ClassNotFoundException: org.postgresql.Driver

De melding lijkt me duidelijk, de Postgres driver wordt niet gevonden. Maar waarom niet :?
De melding verschijnt in NetBeans, maar ook als ik het programma vanaf een console uitvoer.

Dezelfde code gebruik ik in een Java Servlet op een Tomcat server en dat werkt zonder problemen, dus daar ligt het niet aan.

Heb ik toch iets verkeerd gedaan met het classpath?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 28-03 23:48

Gerco

Professional Newbie

jar files moeten expliciet in het classpath genoemd worden. De directory waar ze in staan erin zetten is niet genoeg. Tomcat voegt automatisch alle .jar files in zijn common/lib directory aan het classpath toe, dus vandaar dat het daarin wel werkt.


code:
1
2
set CLASSPATH=$CLASSPATH:/opt/sun-jre-bin-1.5.0.04/lib/ext/postgresql-8.1-405.jdbc3.jar
export CLASSPATH


dus

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

onzin

[ Voor 94% gewijzigd door Verwijderd op 25-02-2006 22:53 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:11

Robtimus

me Robtimus no like you

Gerco schreef op zaterdag 25 februari 2006 @ 22:23:
jar files moeten expliciet in het classpath genoemd worden. De directory waar ze in staan erin zetten is niet genoeg. Tomcat voegt automatisch alle .jar files in zijn common/lib directory aan het classpath toe, dus vandaar dat het daarin wel werkt.
Nou, normaliter moet het wel werken als de .jar (of .zip in sommige gevallen) in $(JRE_HOME)/lib/ext staat. Daar heb ik nml ook JDOM, Forms, etc neergegooid en het werkt hier uitstekend.

De vraag is dan ook: weet je zeker dat dit de JRE is die je gebruikt? Gebruikt NetBeans niet een eigen JRE? Dan moet je de files ook daar in de lib/ext gooien. Wat is de output van 'which java'?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
.

[ Voor 99% gewijzigd door Verwijderd op 25-02-2006 22:54 ]


Verwijderd

Topicstarter
IceManX schreef op zaterdag 25 februari 2006 @ 22:53:
[...]
Nou, normaliter moet het wel werken als de .jar (of .zip in sommige gevallen) in $(JRE_HOME)/lib/ext staat. Daar heb ik nml ook JDOM, Forms, etc neergegooid en het werkt hier uitstekend.

De vraag is dan ook: weet je zeker dat dit de JRE is die je gebruikt? Gebruikt NetBeans niet een eigen JRE? Dan moet je de files ook daar in de lib/ext gooien. Wat is de output van 'which java'?
edwin@localhost ~/projecten/LedenAdministratie/build/classes $ java-config -L
[ibm-jdk-bin-1.4.2.03] "IBM JDK 1.4.2.03" (/etc/env.d/java/20ibm-jdk-bin-1.4.2.03)
[sun-jre-bin-1.5.0.06] "Sun JRE 1.5.0.06" (/etc/env.d/java/20sun-jre-bin-1.5.0.06)
[sun-jdk-1.5.0.06] "Sun JDK 1.5.0.06" (/etc/env.d/java/20sun-jdk-1.5.0.06) *
[sun-jdk-1.4.2.10] "Sun JDK 1.4.2.10" (/etc/env.d/java/20sun-jdk-1.4.2.10)
[ibm-jre-bin-1.4.2.03] "IBM JRE 1.4.2.03" (/etc/env.d/java/20ibm-jre-bin-1.4.2.03)
[sun-jre-bin-1.4.2.10] "Sun JRE 1.4.2.10" (/etc/env.d/java/20sun-jre-bin-1.4.2.10)

Degene waar een * achter staat, wordt gebruikt.

De output van which java is /opt/sun-jdk-1.5.0.06/bin/java
In een andere subdirectory van /opt/sun-jdk-1.5.0.06/ staat ook een Postgres driver.

In NetBeans heb ik in de Library Manager de lib/ lib/ext/ directories en het JAR-bestand voor Postgres toegevoegd.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Staan je permissies op de .jar goed?

Verwijderd

Topicstarter
jochemd schreef op zondag 26 februari 2006 @ 11:37:
Staan je permissies op de .jar goed?
Het werkt nu als ik op de command line de classpath goed instel en dan het progamma start. De permissies zijn dus in orde. Het probleem is nu nog NetBeans, terwijl ik in de Library Manager hetzelfde in de classpath heb ingesteld als in Bash.

Afbeeldingslocatie: http://fampauli.xs4all.nl/~epauli/NetBeans-classpath.png

[ Voor 23% gewijzigd door Verwijderd op 26-02-2006 12:07 ]


  • xos
  • Registratie: Januari 2002
  • Laatst online: 26-03 10:21

xos

Ik maak een aparte library aan in Netbeans. Maar zoals jij hebt gedaan kan ook. Je moet daarna deze library wel even aan je project toevoegen en dat heb jij niet gedaan denk ik?

In je project staat een mapje Libraries. Als je daar even op drukt met de rechtermuisknop kan je "Add library" doen. En kies dat de library waar je die postgresql driver in hebt gezet en het zou moeten werken.

Verwijderd

Topicstarter
xos schreef op zondag 26 februari 2006 @ 12:09:
Ik maak een aparte library aan in Netbeans. Maar zoals jij hebt gedaan kan ook. Je moet daarna deze library wel even aan je project toevoegen en dat heb jij niet gedaan denk ik?

In je project staat een mapje Libraries. Als je daar even op drukt met de rechtermuisknop kan je "Add library" doen. En kies dat de library waar je die postgresql driver in hebt gezet en het zou moeten werken.
Ik had de library inderdaad niet toegevoegd aan het project. Nadat ik de library had toegevoegd was het probleem opgelost. :)
Pagina: 1