Je viens d'installer le drivers JDBC (mysql-connector-java-3.1.11-bin.jar)
ds le répertoire c:\j2sdk1.4.2\jre\lib\ext.La variable d'environnement
CLASSPATH= c:\j2sdk1.4.2;.;
Le problème c'est qu'en exécutant le programme ci-dessous le programme ne
trouve pas le Drivers ( affiche le message Erreur de drivers JDBC).
Avez vous une idée?
Merci de votre aide
public class test
{
public static void main(String[] args)
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Tout est OK");
}
catch (Exception E)
{
System.out.println("Erreur de drivers JDBC");
}
}
}
En fait, je n'ai pas de variable 'JAVA_HOME'. J'ai seulement la variable 'classpath'. Est -ce qu'il y a vraiment besoin de cette variable? si oui quelle valeur lui attribuer?
Le répertoire où tu as installé ton jdk. Dans ton cas :
c:j2sdk1.4.2
J'ai en effet déclaré la variable comme suit : JAVA_HOME = c:j2sdk1.4.2jrelibext comme variable d'environnement Supprime cela et fais comme indiqué ci-dessus.
==> résultat pour java Test $ java Test 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 Test.main(Test.java:4) ------------------------------------------------------------------------- ca ne marche pas.
Désolé de t'embêter... mais je ne comprends tjs pas.
Dans ce cas, tu exécutes ta classe Test sans préciser un classpath. Donc
le seul classpath qui est pris en compte est le classpath par défaut de la jvm (celui qui contient les packages java.* et javax.*). Il ne contient pas le package com.mysql.jdbc.* et donc pas la classe com.mysql.jdbc.Driver. Celle-ci se trouve en fait dans le fichier mysql-connector-java-3.1.11-bin.jar (tu peux t'en persuader en regardant ce qu'il contient avec la commande 'jar -tvf mysql-connector-java-3.1.11-bin.jar')
Je ne suis pas trop bon pour expliquer... Si ce n'est pas clair, dis-moi exactement ce que tu ne comprends pas. J'essaierai de t'aider.
"flipouk" a écrit dans le message de news: 4371bbd3$0$349$
Joseph KHOURY wrote:
Enfin ça marche.Merci Mais j'ai rien compris. Message en sortie ==> Tout est OK
En fait ce que tu appelles deux méthodes n'en font qu'une. Dans les deux cas, tu donnes à l'option '-cp' (= '-classpath') l'argument 'unfichier.jar'. Il est simplement situé à deux endroits différents du disque. Si ca fonctionne c'est que ton fichier jar n'est pas corrompu.
Je te conseille de te familiariser avec cette méthode pour utiliser des libs externes car tu vas en avoir très souvent besoin.
Cela dit, placer ton fichier jar dans $JAVA_HOME/jre/lib/ext devrait fonctionner. Je ne comprends pas pourquoi ca ne marche pas. As-tu bien réglé ta variable d'environnement 'JAVA_HOME' ?
Joseph KHOURY wrote:
Bonsoir,
En fait, je n'ai pas de variable 'JAVA_HOME'. J'ai seulement la variable
'classpath'. Est -ce qu'il y a vraiment besoin de cette variable? si oui
quelle valeur lui attribuer?
Le répertoire où tu as installé ton jdk. Dans ton cas :
c:j2sdk1.4.2
J'ai en effet déclaré la variable comme suit : JAVA_HOME =
c:j2sdk1.4.2jrelibext comme variable d'environnement
Supprime cela et fais comme indiqué ci-dessus.
==> résultat pour java Test
$ java Test
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 Test.main(Test.java:4)
-------------------------------------------------------------------------
ca ne marche pas.
Désolé de t'embêter... mais je ne comprends tjs pas.
Dans ce cas, tu exécutes ta classe Test sans préciser un classpath. Donc
le seul classpath qui est pris en compte est le classpath par défaut de
la jvm (celui qui contient les packages java.* et javax.*). Il ne
contient pas le package com.mysql.jdbc.* et donc pas la classe
com.mysql.jdbc.Driver. Celle-ci se trouve en fait dans le fichier
mysql-connector-java-3.1.11-bin.jar (tu peux t'en persuader en regardant
ce qu'il contient avec la commande
'jar -tvf mysql-connector-java-3.1.11-bin.jar')
Je ne suis pas trop bon pour expliquer... Si ce n'est pas clair, dis-moi
exactement ce que tu ne comprends pas. J'essaierai de t'aider.
"flipouk" <flipouk@yahoo.com> a écrit dans le message de news:
4371bbd3$0$349$da0feed9@news.zen.co.uk...
Joseph KHOURY wrote:
Enfin ça marche.Merci
Mais j'ai rien compris. Message en sortie ==> Tout est OK
En fait ce que tu appelles deux méthodes n'en font qu'une. Dans les deux
cas, tu donnes à l'option '-cp' (= '-classpath') l'argument
'unfichier.jar'. Il est simplement situé à deux endroits différents du
disque. Si ca fonctionne c'est que ton fichier jar n'est pas corrompu.
Je te conseille de te familiariser avec cette méthode pour utiliser des
libs externes car tu vas en avoir très souvent besoin.
Cela dit, placer ton fichier jar dans $JAVA_HOME/jre/lib/ext devrait
fonctionner. Je ne comprends pas pourquoi ca ne marche pas. As-tu bien
réglé ta variable d'environnement 'JAVA_HOME' ?
En fait, je n'ai pas de variable 'JAVA_HOME'. J'ai seulement la variable 'classpath'. Est -ce qu'il y a vraiment besoin de cette variable? si oui quelle valeur lui attribuer?
Le répertoire où tu as installé ton jdk. Dans ton cas :
c:j2sdk1.4.2
J'ai en effet déclaré la variable comme suit : JAVA_HOME = c:j2sdk1.4.2jrelibext comme variable d'environnement Supprime cela et fais comme indiqué ci-dessus.
==> résultat pour java Test $ java Test 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 Test.main(Test.java:4) ------------------------------------------------------------------------- ca ne marche pas.
Désolé de t'embêter... mais je ne comprends tjs pas.
Dans ce cas, tu exécutes ta classe Test sans préciser un classpath. Donc
le seul classpath qui est pris en compte est le classpath par défaut de la jvm (celui qui contient les packages java.* et javax.*). Il ne contient pas le package com.mysql.jdbc.* et donc pas la classe com.mysql.jdbc.Driver. Celle-ci se trouve en fait dans le fichier mysql-connector-java-3.1.11-bin.jar (tu peux t'en persuader en regardant ce qu'il contient avec la commande 'jar -tvf mysql-connector-java-3.1.11-bin.jar')
Je ne suis pas trop bon pour expliquer... Si ce n'est pas clair, dis-moi exactement ce que tu ne comprends pas. J'essaierai de t'aider.
"flipouk" a écrit dans le message de news: 4371bbd3$0$349$
Joseph KHOURY wrote:
Enfin ça marche.Merci Mais j'ai rien compris. Message en sortie ==> Tout est OK
En fait ce que tu appelles deux méthodes n'en font qu'une. Dans les deux cas, tu donnes à l'option '-cp' (= '-classpath') l'argument 'unfichier.jar'. Il est simplement situé à deux endroits différents du disque. Si ca fonctionne c'est que ton fichier jar n'est pas corrompu.
Je te conseille de te familiariser avec cette méthode pour utiliser des libs externes car tu vas en avoir très souvent besoin.
Cela dit, placer ton fichier jar dans $JAVA_HOME/jre/lib/ext devrait fonctionner. Je ne comprends pas pourquoi ca ne marche pas. As-tu bien réglé ta variable d'environnement 'JAVA_HOME' ?