Pb de connexion à une BDD MySQL en JAVA

Résolu/Fermé
mc.picsou Messages postés 3 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 21 avril 2008 - 21 avril 2008 à 11:46
mark.ibari Messages postés 3 Date d'inscription mardi 13 septembre 2011 Statut Membre Dernière intervention 13 septembre 2011 - 13 sept. 2011 à 10:09
Bonjour,

Je débute en programmation JAVA et je suis déjà confronté à un problème bloquant.
Je m'explique, je maintient une application WEB codée en JAVA et un des modules me pose problème. En effet, je veux faire une connexion à ma base de données MySQL en utilisant "com.mysql.jdbc.Driver". Voici mon code :

public static void main(String[] args)throws Exception
{
System.out.println("Appli demarree !!!...");
ArrayList<String> listeProjet = new ArrayList<String>();
try
{
System.out.println("111111111");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("22222222");
conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/MaBase", "toto", "toto");
System.out.println("Connexion : " + conn);
Statement st = (Statement) conn.createStatement();
String Request = "SELECT * FROM `projet`";
System.out.println(Request);
ResultSet rs = (ResultSet) st.executeQuery(Request);
System.out.println("RESULT SET");
while (rs.next())
{
System.out.println(rs.getString("reference"));
listeProjet.add(rs.getString("reference"));
System.out.println(listeProjet.get(0));
}
rs.close();
st.close();
System.out.println("nbre projet: " + listeProjet.size());
conn.close();
}
catch (ClassNotFoundException e)
{
System.out.println("BAD SQL CNX : " + e.getStackTrace());
e.printStackTrace();
}
catch (Exception e)
{
System.out.println("BAD SOMETHING : " + e.getStackTrace());
e.printStackTrace();
}
}

Quand je teste ce code sous EasyEclipse, je n'ai aucun problème, il m'affiche bien la liste que j'attends. Mais lorsque je créé le jar correspondant, là y a soucis :

Appli demarree !!!...
111111111
BAD SQL CNX : [Ljava.lang.StackTraceElement;@42e816
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at Toto.CToto.main(CToto.java:29)

Où dois-je déclarer cette class, j'ai cherché sur le net (entre autre sur le site de MySQL) et tout ce que j'ai trouvé ne résoud pas mon pb. J'ai même essayé d'installer la dernière version du "Connecteur MySQL", mais rien à faire. Je pense qu'il me manque une classe dans la description de mon projet, mais je ne sais pas laquelle.

Je désespère !!!!!!!!!!!..........

Merci de m'avoir lu jusquau bout et n'hésitez pas à me poser vos questions pour m'aider à résoudre mon pb
A voir également:

3 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
21 avril 2008 à 11:57
Salut,

Il faut télécharger le driver (le pilote JDBC) c'est un fichier .jar alors vous pouvez facilement l'importer, ou vous pouvez l'ajouter (son chemin) manuellement à la variable d'environnement Classpath.

Si vous ne savez pas comment importer un .jar, il faut lire un tuto sur le sujet.

Si vous voulez trouver le pilote JDBC pour MySQL (sachez qu'il y a un driver différent pour chaque SGBD), vous pouvez utiliser Google ou Developpez.com
0
mc.picsou Messages postés 3 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 21 avril 2008
21 avril 2008 à 15:21
Salut,

Merci tarek_dotzero pour ta réponse.
En fait, j'ai déjà pensé à cette solution, j'ai même téléchargé la dernière version du driver (mysql-connector-java-5.1.6-bin.jar), mais rien a faire.
Perso, je penche plus pour une mauvaise utilisation d'Eclipse quand je demande la création de mon fichier "jar".
La méthode que j'utilise pour créer ce fichier c'est :
- Clique droit sur mon projet
- Export...
- "Type d'Export" : JAVA -> JAR
- Je donne un nom au fichier à générer (par exemple c:\toto.jar)
- Et je sélectionne la classe où se trouve mon "main".

Ensuite dans une fenêtre de commande je tape la commande java - jar "c:\toto.jar". Et c'est là que j'ai ce message d'insulte cité dans mon message initial.
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
21 avril 2008 à 15:54
Bien sûr mon ami, le driver n'est pas défini dans le jar.

Tout ce qu'il vous faut c'est de modifier un peu le ficher MANIFEST de votre jar, et comment faire? voilà la procédure:

1. Décompressez le jar par un décompresseur (winrar par exemple).
2. Selection le fichier .mf du repertoire META-INF

Ajouter la ligne: classpath: ./mondriver.jar

bien sur le chemin de votre jar.

puis un saut de ligne et c'est bon (le fichier manifest doit se terminer par un saut de ligne)


Bon Courage.
0
mc.picsou Messages postés 3 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 21 avril 2008
21 avril 2008 à 16:20
RE merci tarek_dotzero.

En effet, suite à ton dernier message, j'ai un plus cherché de ce côté, bien que j'avais déjà pas mal cherché. Mon fichier META-INF était correctement renseigné, mais le répertoire que le Class-Path indiquait n'existait pas. Et donc les fichiers jar non plus. Ca fait plus d'une semaine que je triffouille dans tous les sens pour me rendre compte que c'était juste un pb de base.
En tout cas, merci encore Tarek, sans toi, je pense que j'aurais mis du temps à comprendre ces différentes subtilités de fichiers de configuration et autre.

Je clos donc cette question.
0
mark.ibari Messages postés 3 Date d'inscription mardi 13 septembre 2011 Statut Membre Dernière intervention 13 septembre 2011
13 sept. 2011 à 10:09
Si tu souhaites t'affranchir des problèmes de classpath et de librairie, je t'encourage fortement l'usage d'un outil comme Maven pour gérer ces problématique ainsi que le packaging. Tu trouveras un exemple très simple de connection sur une base MySQL en Java avec l'utilisation de Maven:

http://www.java-tutorial.ch/core-java-tutorial/mysql-with-java-and-maven-tutorial/
0