Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

[Java]DB driver wordt niet gevonden

Pagina: 1
Acties:

  • telefoontoestel
  • Registratie: oktober 2002
  • Laatst online: 29-02 11:23

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Ik probeer een verbinding te maken met mijn PostGres database op mijn localhost. Hiervoor heb ik de nieuwste driver gedownload (postgresql-9.2-1002.jdbc4.jar) en deze geplaatst in de lib map van mijn huidige Java installatie. Tevens heb ik deze map handmatig toegevoegd aan de CLASSPATH via de omgevingsvariabele instellingen in Windows. Toch wordt op een of andere manier de driver niet gevonden.

Als ik ook een test doe
Java:
1
2
3
4
5
java.util.Enumeration e = java.sql.DriverManager.getDrivers();
while (e.hasMoreElements()) {
  Object driverAsObject = e.nextElement();
  System.out.println("JDBC Driver=" + driverAsObject);
}

Dan vind deze ook alleen een driver voor odbc. Als ik vervolgens in een command prompt set p uitvoer krijg ik de CLASSPATH variabele ook niet te zien. Kijk ik vervolgens weer in de omgevinsvariabele via "Deze Computer -> eigenschappen" staat het er wel tussen.

Als ik handmatig de driver probeer te laden
Java:
1
2
3
4
URL u = new URL("jar:"+this.jdbcDriverPath);
URLClassLoader ucl = new URLClassLoader(new URL[] { u });
Driver d = (Driver)Class.forName(driver.getDriver(), true, ucl).newInstance();
DriverManager.registerDriver(new dynamicDBDriver(d));

Dan krijg ik ook dezelfde foutmelding.
code:
1
No suitable driver found for jdbc:postgresql://

Probeer ik daarna nogmaals de driver te laden:
Java:
1
Class.forName(driver.getDriver()).newInstance();

Krijg ik de foutmelding
code:
1
ClassNotFound: org.postgresql.Driver

Via Google kom ik niet verder meer. Hoe zou ik dit verder nog op kunnen lossen?

[Voor 8% gewijzigd door telefoontoestel op 09-02-2013 14:24]

telefoontoestel


  • Herko_ter_Horst
  • Registratie: november 2002
  • Laatst online: 10:10
In de "lib" directory van je Java-installatie zetten is sowieso fout. In je globale CLASSPATH zetten is ook niet de echte oplossing (veel te veel gedoe als je je programma ooit op een andere machine wilt draaien, en wat ga je doen als je meerdere programma's hebt?).

Ik zou de driver bij je code in de buurt houden. Een veelgebruikte structuur is:
\Project
\Project\src
\Project\bin
\Project\lib


De src directory bevat dan je .java files,
De bin directory bevat de .class files
De lib directory bevat externe libraries.

Vervolgens maak je een .bat/.cmd bestandje die het juist classpath (met -cp bin:lib\postgresxx.jar) zet bij het starten van je programma (gaat je ook boel typwerk schelen als je gewoon "run.bat" kunt doen in plaats van zelf "java -cp .... mijn.project.Main" te moeten doen).

Wil je een stapje verder dan de kale commandline, dan kan ik je aanraden te kijken naar Ant of Maven. En voor tijdens het ontwikkelen een fatsoenlijke IDE (Eclipse, Netbeans, ...).

[Voor 15% gewijzigd door Herko_ter_Horst op 09-02-2013 14:34]

"Any sufficiently advanced technology is indistinguishable from magic."


  • telefoontoestel
  • Registratie: oktober 2002
  • Laatst online: 29-02 11:23

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Netbeans gebruik ik momenteel al. Ik heb ook al een poging gewaagd om het jar bestand bij het project te plaatsen, maar ik krijg het niet voor elkaar om deze gevonden te laten worden. Wat is daar de reguliere instructie voor?

telefoontoestel


  • pedorus
  • Registratie: januari 2008
  • Niet online
Regulier zou ik een persistence unit gebruiken. ;) Netbeans heeft ook een functie om automatisch classes hiervoor te maken: new->entity classes from database... die je een wizard laat zien hiervoor.

Als het gaat over libraries toevoegen: Rechtsklikken op libraries onder je project, properties -> tabje run -> JAR/Folder -> navigeren naar de JAR en toevoegen. (Tenzij je een war aan het maken ben, dan hangt het van je webserver af, maar dat lijkt me hier niet van toepassing.)

  • telefoontoestel
  • Registratie: oktober 2002
  • Laatst online: 29-02 11:23

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Hmm. Ik heb gedaan wat je zei. Ik heb de library toegevoegd bij zowel de run als de compile omdat ik een link tegen kwam die dat suggereerde. Hij komt nu wel voor in de drivers lijst van de eerder genoemde lijst. Toch krijg ik nog de foutmelding:
code:
1
No suitable driver found for jdbc:postgresql://

De driver string is bij mij:
code:
1
org.postgresql.Driver

en de connectiestring:
code:
1
jdbc:postgresql://

Zit hierin misschien toch iets fout?

telefoontoestel


  • pedorus
  • Registratie: januari 2008
  • Niet online
Voor het compileren is die library als het goed is niet nodig, dus uit dat lijstje kan ie weg. Verder geen idee wat je precies doet. Het standaardgebeuren ziet er zo uit:
Java:
1
2
3
Class.forName("org.postgresql.Driver");
Connection connection = DriverManager.getConnection(
    "jdbc:postgresql://hostname:port/dbname","username", "password");

Waarom daar van afwijken?

  • telefoontoestel
  • Registratie: oktober 2002
  • Laatst online: 29-02 11:23

telefoontoestel

Maak me gelukkig....Bel!!

Topicstarter
Ik heb het voor elkaar gekregen nu. Bij de connection string ben je verplicht de hostname etc in te vullen. Anders geeft ie de foutmelding over de driver. Een specifieke foutmelding betreffende een missende hostname oid zou beter zijn geweest.

telefoontoestel

Pagina: 1


Apple iPhone 11 Microsoft Xbox Series X LG OLED C9 Google Pixel 4 CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True