[Java+PostgreSQL] JDBC driver: NullPointerException

Pagina: 1
Acties:

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
Ik ben bezig om via een java applicatie een verbinding te maken met een postgresql-server. Ik heb hierbij de drivers van de website van postgresql gedownload

http://jdbc.postgresql.org/download/pg72jdbc2.jar

Bij het verbinden van de database geeft hij de volgende foutmelding:
SQLException: Something unusual has occured to cause the driver to fail. Please report this exception: Exception: java.lang.NullPointerException
Stack Trace:


java.lang.NullPointerException

at org.postgresql.Connection.openConnection(Connection.java:155)

at org.postgresql.Driver.connect(Driver.java:149)

at java.sql.DriverManager.getConnection(DriverManager.java:517)

at java.sql.DriverManager.getConnection(DriverManager.java:177)

at boerenbridge.server.database.DatabaseManager.(DatabaseManager.java:34)

at boerenbridge.server.database.DatabaseManager.main(DatabaseManager.java:20)

End of Stack Trace
voor het verbinden gebruik ik de volgende code:

dbcon = DriverManager.getConnection(loginUrl, loginUser, loginPasswd);

Wie weet wat er fout gaat?

[ Voor 2% gewijzigd door drm op 12-03-2003 11:42 . Reden: layout-f***-up -- ]


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Debug zelf eens even :)
Maar een nullpointer exception wijst op een derefferencing van een pointer die naar NULL wijst.
Zijn loginUrl, loginUser en loginPasswd allemaal niet null?

  • bonzz.netninja
  • Registratie: Oktober 2001
  • Laatst online: 23-08 11:43

bonzz.netninja

Niente baffi

nullpointer exeption wijst dus naar objecten of variabelen die hij niet kan vinden. Dus de java kan IETS niet vinden, waar naar wel wordt verwezen

(is eigenlijk het zelfde wat glimi zei ;) )

vuistdiep in het post-pc tijdperk van Steve  | Joepie joepie. Dat ging echt toppie! | https://www.wegmetbigtech.nl


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Gewoon even kijken in welke regel het fout gaat en dan kijken waar het aan kan liggen.

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
Glimi schreef op 12 maart 2003 @ 11:43:
Debug zelf eens even :)
Maar een nullpointer exception wijst op een derefferencing van een pointer die naar NULL wijst.
Zijn loginUrl, loginUser en loginPasswd allemaal niet null?
:) Dat is nu precies het probleem. Hij gaat de fout in tijdens het connecten, en de code van de postgreSQL is afgeschermd, en dus kan ik niet zien waar hij de fout in gaat...

Misschien dat hier iemand is die de foutmelding herkent, vandaar dat ik het hier neerzet.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De JDBC driver (en heel PostgreSQL) is open source, dus zo afgeschermd is het niet :+ . Je kan het zelfs doorbladeren via de CVS web interface.

Normaal gesproken werkt die zaak natuurlijk gewoon, dus ik vermoed dat je ergens zelf null meegeeft, waarop niet netjes gecontroleerd wordt door de JDBC driver.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

BoKToR schreef op 12 maart 2003 @ 12:05:
:) Dat is nu precies het probleem. Hij gaat de fout in tijdens het connecten, en de code van de postgreSQL is afgeschermd, en dus kan ik niet zien waar hij de fout in gaat...
Volgens mij gaat het toch echt in je eigen code fout :?
at boerenbridge.server.database.DatabaseManager.(DatabaseManager.java:34)

at boerenbridge.server.database.DatabaseManager.main(DatabaseManager.java:20)
Misschien dat hier iemand is die de foutmelding herkent, vandaar dat ik het hier neerzet.

Euh... als er al een paar mensen zijn die je uitleggenw at een nullpointerexception is, denk je dan niet dat die mensen de foutmelding herkennen? ;)

Het is alleen een erg gebruikelijke melding. Ga er gerust maar van uit dat de fout in jouw code zit en niet in een stable-release van de postgresql-driver.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
ACM: Volgens mij gaat het toch echt in je eigen code fout :?
Nou ja, de exception ontstaat wel in de driver. Hij komt uiteindelijk inderdaad in eigen code terecht, maar dat is nogal logisch. Dit wil uiteraard niet zeggen dat de fout in de driver zit: als jij de driver niet goed aanroept, kan er in de driver een exception onstaan.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier


Ja, dat bedoel/zeg ik ook :P

[ Voor 49% gewijzigd door ACM op 12-03-2003 12:19 ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
ACM: dat bedoel/zeg ik ook :P
:P

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
mbravenboer schreef op 12 March 2003 @ 12:08:
De JDBC driver (en heel PostgreSQL) is open source, dus zo afgeschermd is het niet :+ . Je kan het zelfs doorbladeren via de CVS web interface.

Normaal gesproken werkt die zaak natuurlijk gewoon, dus ik vermoed dat je ergens zelf null meegeeft, waarop niet netjes gecontroleerd wordt door de JDBC driver.
Dan heb ik nog even een vraagje: Ik gebruik JBuilder7 en bij het debuggen stapt hij dan in de class Driver. In dit nieuwe tabblad zeg maar staat de tekst: // unable to open class file.

Trouwens, deze melding heb ik nog niet eerder gezien, wat ik wel eens heb gezien is dat je tijdens het debuggen een class te zien krijgt, met alleen de methodes, dus niet de source. Doe ik iets fout, of is dat normaal?

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

java.lang.NullPointerException

at org.postgresql.Connection.openConnection(Connection.java:155)
Daar gaat het dus fout... wat staat daar, op regel 155?

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
ACM schreef op 12 maart 2003 @ 12:15:

[...]

Volgens mij gaat het toch echt in je eigen code fout :?

[...]

Zie reply mBravenboer


[...]

Euh... als er al een paar mensen zijn die je uitleggenw at een nullpointerexception is, denk je dan niet dat die mensen de foutmelding herkennen? ;)


ik weet best wat een nullpointerexception is, maar in deze context heb ik hem nog nooit gezien. Is het dan raar om te vragen of er iemand die ooit met postgresql heeft gewerkt deze foutmelding kent?


Het is alleen een erg gebruikelijke melding. Ga er gerust maar van uit dat de fout in jouw code zit en niet in een stable-release van de postgresql-driver.
Tuurlijk ga ik er van uit dat de fout in mijn code zit. Maar ik zie niet wat er fout is. Als ik naar tutorials kijk op het net, dan doe ik precies hetzelfde.
Dit is wat ik gebruik:

Connection dbcon = DriverManager.getConnection(loginUrl, loginUser, loginPasswd);

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
mbravenboer: ik vermoed dat je ergens zelf null meegeeft, waarop niet netjes gecontroleerd wordt door de JDBC driver.
Ga dit eerst eens na: geef je ergens null mee als methode argument?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
esf schreef op 12 March 2003 @ 12:29:
[...]


Daar gaat het dus fout... wat staat daar, op regel 155?
Het vervelende is dat ik niet in dit bestand kan kijken (//Unable to load class file), omdat ik alleen de class-files heb, en niet de java-files.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
mbravenboer schreef op 12 March 2003 @ 12:33:
[...]

Ga dit eerst eens na: geef je ergens null mee als methode argument?
nee, die strings worden netjes meegegeven...

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

BoKToR schreef op 12 March 2003 @ 12:37:
[...]


Het vervelende is dat ik niet in dit bestand kan kijken (//Unable to load class file), omdat ik alleen de class-files heb, en niet de java-files.
Oh sorry ik had dus niet helemaal goed gelezen. Ik dacht dat je die klasse Connection zelf had geschreven. De reactie van mbravenboer leidt waarschijnlijk naar de oplossing van het probleem, maar mocht je echt die Connection klasse willen bekijken, dan kan je een decompiler downloaden van http://members.fortunecity.com/neshkov/dj.html. Maar ik denk zelf niet dat dit nodig is en dat je gewoon even je eigen klassen moet debuggen..

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

decompiler :?
Postgresql CVS
is dat niet *iets* handiger? ;)

Owja, Connection bestaat pas na het compilen geloof ik...

Anyway, het gaat er niet om dat je de strings netjes meegeeft, maar dat ze de goede content hebben en dus niet null zijn :)

[ Voor 10% gewijzigd door ACM op 12-03-2003 12:49 ]


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Heb je mbv try en catch de exception wel goed afgevangen? Hier kan de fout ook nog wel eens liggen..

De declaratie van de methode:
Java:
1
2
3
4
public static Connection getConnection(String url,
                                       String user,
                                       String password)
                                throws SQLException

[ Voor 58% gewijzigd door esf op 12-03-2003 12:50 ]

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

mbravenboer schreef op 12 March 2003 @ 12:08:
Normaal gesproken werkt die zaak natuurlijk gewoon, dus ik vermoed dat je ergens zelf null meegeeft, waarop niet netjes gecontroleerd wordt door de JDBC driver.

Er wordt in Driver.java trouwens netjes alle exceptions afgevangen, maar vervolgens de onbekende exceptions middels een SQLException weer verder opgegooid.
esf schreef op 12 March 2003 @ 12:49:
Heb je mbv try en catch de exception wel goed afgevangen? Hier kan de fout ook nog wel eens liggen..
Is het niet tig keer handiger van de postgresql driver af te blijven en eerst eens de code op regels
boerenbridge.server.database.DatabaseManager.(DatabaseManager.java:34)
en
boerenbridge.server.database.DatabaseManager.main(DatabaseManager.java:20)

Alle parameters van de functies die daar worden uitgevoerd middels een println naar je scherm gooien en controleren of ze wel goed zijn verder.

[ Voor 41% gewijzigd door ACM op 12-03-2003 12:53 ]


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

ACM schreef op 12 maart 2003 @ 12:48:
decompiler :?
Postgresql CVS
is dat niet *iets* handiger? ;)
euhm.. ja :) even niet aan gedacht... ;)

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Is het niet tig keer handiger van de postgresql driver af te blijven
Zit ik daar aan dan? Hij roept de methode getConnection() toch zelf aan, en die kan een SQLException genereren, dus die moet je afvangen, lijkt mij

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
ACM schreef op 12 maart 2003 @ 12:48:
decompiler :?
Postgresql CVS
is dat niet *iets* handiger? ;)

Owja, Connection bestaat pas na het compilen geloof ik...

Anyway, het gaat er niet om dat je de strings netjes meegeeft, maar dat ze de goede content hebben en dus niet null zijn :)
en de strings zijn zeker weten niet null :)

sorry, ik zal de volgende keer wat duidelijker zijn

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

BoKToR schreef op 12 March 2003 @ 12:57:
en de strings zijn zeker weten niet null :)
Dan zijn ze niet goed geformuleerd...
sorry, ik zal de volgende keer wat duidelijker zijn

Nou, dat kan nog steeds beter dan ;)

Stukjes aanroepende code werkt ook altijd verhelderend.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
ACM schreef op 12 March 2003 @ 12:58:

[...]

Dan zijn ze niet goed geformuleerd...

[...]

Nou, dat kan nog steeds beter dan ;)

Stukjes aanroepende code werkt ook altijd verhelderend.
Okey, een stukkie code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 

    // Load the PostgreSQL driver
    try
    {
      Class.forName("org.postgresql.Driver");

      Connection dbcon = DriverManager.getConnection
         ("jdbc:postgresql://blaat.blaat.nl:22","blaat","nogmeerblaat");

      System.out.println("Connected");
    }
    catch (ClassNotFoundException ex)
    {
      System.err.println("ClassNotFoundException: " + ex.getMessage());
    }
    catch (SQLException ex)
    {
      System.err.println("SQLException: " + ex.getMessage());
    }


En voor de duidelijkheid: Blaat is natuurlijk niet wat ik er echt heb staan, het gaat om het idee :)

[ Voor 31% gewijzigd door JeroenTheStig op 12-03-2003 19:18 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

waarom connect je op poort 22 :?
Dat is normaliter toch 5432?

Ow en hoe wilde je de dbcon buiten je try-catch gebruiken? Of is dat alleen maar voor de demo code? :)

Ow en je bent wellicht de databasenaam nog vergeten achter de hostnaam...

[ Voor 19% gewijzigd door ACM op 12-03-2003 19:47 ]


Verwijderd

Documentatie lezen. Je moet postgresql (postmaster dus) met de -i flag opstarten, dan doet de jdbc driver het wel.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

aba, whatever...

Als je wel es postgresql via jdbc had gebruikt had je geweten dat je dan een andere melding krijgt dan een nullpointer.

[ Voor 4% gewijzigd door ACM op 12-03-2003 20:32 ]


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
ACM schreef op 12 maart 2003 @ 19:45:
waarom connect je op poort 22 :?
Dat is normaliter toch 5432?

Ow en hoe wilde je de dbcon buiten je try-catch gebruiken? Of is dat alleen maar voor de demo code? :)

Ow en je bent wellicht de databasenaam nog vergeten achter de hostnaam...
dbcon heb ik even zo gedaan voor de demo code idd :)

Poort 22 is omdat we dit van de leraar hebben gekregen, hij beheert de postgresql-server, en heeft voor ons een account aangemaakt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Poort 22 is de standaard poort voor SSH, communicatie protocol ala telnet voor remote-management.

Ik kan nauwelijks geloven dat ie de poort daarop open gezet heeft, maar het zou met firewalls te maken kunnen hebben, neemt niet weg dat je de databasenaam in je voorbeeld vergeten bent. :)

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23-08 17:28
ACM schreef op 12 March 2003 @ 21:16:
Poort 22 is de standaard poort voor SSH, communicatie protocol ala telnet voor remote-management.

Ik kan nauwelijks geloven dat ie de poort daarop open gezet heeft, maar het zou met firewalls te maken kunnen hebben, neemt niet weg dat je de databasenaam in je voorbeeld vergeten bent. :)
ik maak d'r nu een potje van 8)7

We hebben vorige week met Putty geklooid, en dat was idd met SSH op poort 22. Daarmee hebben we op die server ingelogd, en ik heb nu de boel verward :?

Ik had poort 5432 ook geprobeerd, dit werkte niet. Vervolgens heb ik poort 22 geprobeerd, zoals je ziet in m'n code.. en het is logisch dat dat niet gaat werken...

@#$ sorry voor dit amateuristisch gepruts van mij :O

Ik hoop dat ik in de toekomst wat meer met die poorten-crap overweg kan, want dit schiet ook niet op zo..

[ Voor 8% gewijzigd door JeroenTheStig op 12-03-2003 21:40 ]


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

Kan je niet in de catch van de SQLException getErrorCode() (zie java api bij SQLException) aanroepen op ex en dan op de postgresql site kijken welke foutmelding daarbij hoort... Het zou kunnen zijn dat hij de server niet kan vinden, maar dat weet ik niet zo..

Edit:
Damn.. ik had niet door dat jullie al aan een tweede pagina waren begonnen :p
Maar volgens mij is hij nog steeds wel een beetje van toepassing..

[ Voor 43% gewijzigd door esf op 12-03-2003 22:49 ]

The hardest thing in the world to understand is the income tax. - Albert Einstein

Pagina: 1