Bonjour,
Je travaille sur un plugin pour un serveur de jeu pour pouvoir se connecter à une BDD non persistante stockée en RAM. La bdd en question est HSQLDB.
Je travaille sur Eclipse
Je dois donc en premier lieu dans Java charger le driver "org.hsqldb.jdbc.JDBCDriver" comme il est dit dans le tutoriel fourni par HSQLDB. Donc logiquement je fais la même chose qu'avec le driver JDBC mysql que j'arrive à utiliser:
Et bien évidement j'ai l’exception qui me revient dans la tronche.... Bon du coup je commence mes recherches et je me rends compte que je ne comprends absolument pas comment Eclipse fonctionne entre buildpath et classpath, donc j’approfondis mes recherches.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 try { Class.forName("org.hsqldb.jdbc.JDBCDriver"); return null; } catch (ClassNotFoundException ed) { ed.printStackTrace(); }
Maintenant je crois avoir compris que le buildpath c'est ce que l'IDE utilise pour compiler les sources et le classpath la même chose mais utilisée pour l’exécution.
Alors déjà j'ai une question qui me taraude depuis le début c'est : "pourquoi Eclipse n'intègre pas les externals jars dans la nouvelle jar pour pas a dépendre d'autres jars lors de l’exécution ?"
Bon après avoir compris ça je me tourne bien sur vers la FAQ JDBC developpez.net qui est un peu ma bible ces derniers jours et je tombe sur l'article qui parle du driver ("Comment charger un Driver") et qui précise bien que le driver doit se trouver dans le classpath...
Logique me direz vous ! Donc je commence à partir à la recherche du classpath et comment le définir avec Eclipse et ses milliards de paramètres. En cherchant sur le net on me dit qu'il faut que je mette la jar hsqldb.jar dans les externals jars => donc dans le build path, et quid du classpath ?
Je finis par trouver un fichier dans le dossier du package dans le workspace:
C'est sans équivoque !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="externalJars"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_13"/> <classpathentry kind="lib" path="C:/MineCraft/eclipse/externalJars/hsqldb.jar"/> <classpathentry kind="lib" path="C:/MineCraft/eclipse/externalJars/bukkit.jar"/> <classpathentry kind="output" path="bin"/> </classpath>
Ces deux lignes montrent bien que l'archive est dans le classPath.
Je précise aussi que j'ai trouvé un code qui permet de voir les Driver chargés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <classpathentry kind="lib" path="C:/MineCraft/eclipse/externalJars/hsqldb.jar"/> <classpathentry kind="src" path="externalJars"/>
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Print out all loaded JDBC drivers. Enumeration<Driver> er = java.sql.DriverManager.getDrivers(); while (er.hasMoreElements()) { Object driverAsObject = er.nextElement(); this.logger.info("JDBC Driver=" + driverAsObject); }
Merci d'avance pour votre aide.
Partager