Problème pilote Mysql-java BDD
Résolu/Fermé
A voir également:
- Unreported exception classnotfoundexception; must be caught or declared to be thrown
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Pilote son windows 10 - Télécharger - Pilotes & Matériel
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
1 réponse
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
Modifié le 13 août 2017 à 15:35
Modifié le 13 août 2017 à 15:35
Bonjour,
Le problème que tu as est plus simple que ça, il n'a rien à voir avec un problème de classpath ou de base de données (ce qui ne veut pas dire que tu n'en auras pas quand même plus tard) mais pour l'instant c'est juste de la gestion d'exception.
Dans ton cas :
La description de l'erreur est plutôt précise, mais je vais reformuler :
La méthode
Voir la documentation de Class.forName :
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#forName-java.lang.String-
Donc il faut modifier ton code, au choix :
1) en attrapant l'exception avec un try/catch :
2) en propageant l'exception avec un throws :
Voir le cours Programmation Java/Exceptions
La confiance n'exclut pas le contrôle
Le problème que tu as est plus simple que ça, il n'a rien à voir avec un problème de classpath ou de base de données (ce qui ne veut pas dire que tu n'en auras pas quand même plus tard) mais pour l'instant c'est juste de la gestion d'exception.
Dans ton cas :
Test.java:4: error: unreported exception ClassNotFoundException; must be caught or declared to be thrown Class.forName("com.mysql.jdbc.Driver");
La description de l'erreur est plutôt précise, mais je vais reformuler :
La méthode
Class.forName(String)peut lever une exception de type
ClassNotFoundExceptionque tu es obligé de traiter, soit en l'attrapant avec un try/catch, soit en la propageant avec un throws.
Voir la documentation de Class.forName :
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#forName-java.lang.String-
Donc il faut modifier ton code, au choix :
1) en attrapant l'exception avec un try/catch :
public class Test { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
2) en propageant l'exception avec un throws :
public class Test { public static void main(String[] args) throws ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); } }
Voir le cours Programmation Java/Exceptions
La confiance n'exclut pas le contrôle
13 août 2017 à 15:40
j'avais déjà tester ça mais le problème ne ce ressoud pas, nouveau code :
ensuite je : javac Test.java && java Test
et la erreur suivante :
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at Test.main(Test.java:5)
peut etre dois-je compiler avec une autre commande ? mais je n'arrives pas a trouver
Modifié le 13 août 2017 à 15:51
En fait ce n'est pas le même problème, c'est juste le problème suivant... mais il fallait d'abord corriger les erreurs de compilations avant de passer aux erreurs d'exécution.
Maintenant avec le try/catch ton code compile, mais à l'exécution Class.forName plante car il ne trouve pas ton Driver, donc maintenant c'est effectivement un problème de classpath.
Dans ton message tu disais que tu faisais :
Mais ça ne sert à rien de rajouter le connecteur à la compilation, ce qu'il faut c'est le rajouter à l'exécution, car c'est là que ton programme en a besoin :
Sous Windows :
Sous Linux :
Modifié le 13 août 2017 à 15:56
long pavé :
et derniere ligne du pavé :
"mysql-connector-java-5.1.43-bin.jar : commande introuvable"
Modifié le 13 août 2017 à 15:58
Modifié le 13 août 2017 à 16:00
(et oui je suis sous ubuntu et je crois que sur ubuntu ";" = commande suivante donc c'est pour ça la nuance)