2010-03-26 3 views
3

Je reçois l'erreur suivante lorsque je tente de lancer un programme simple Java JDBC à la ligne de commande:ClassNotFoundException lors de la connexion à MySql avec JDBC

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver/java 
Caused by: java.lang.ClassNotFoundException: LoadDriver.java 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

Voici le programme Java simple, copié à droite de la docs JDBC:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
// Notice, do not import com.mysql.jdbc.* 
// or you will have problems! 
public class LoadDriver { 
    public static void main(String[] args) { 
     try { 
      // The newInstance() call is a work around for some 
      // broken Java implementations 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     } catch (Exception ex) { 
     throw ex; 
      // handle the error 
     } 
    } 
} 

problème est, je suis sûr que mon sang shell bash variable $ CLASSPATH est pointé sur le fichier .jar correct. Pour être sûr, je copiais le JDBC .jar dans le même répertoire que mon programme et il a couru comme suit:

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 

Je reçois toujours la même erreur.

Edit:

j'ai suivi la suggestion de Powerlord ci-dessous, et maintenant je reçois toujours à peu près la même exception.

je suis entré:

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 
java LoadDriver 

si je laisse le drapeau classpath sur la deuxième commande ne semble pas à la matière. Je reçois encore:

Exception in thread "main" java.lang.NoClassDefFoundError: LoadDriver 
Caused by: java.lang.ClassNotFoundException: LoadDriver 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 
+0

erreur CLASSPATH? Vraiment? :( – Bombe

Répondre

3

Je pense que votre syntaxe est fausse ici. Avez-vous déjà LoadDriver.java compilé en utilisant:

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java ? 

Si oui, alors vous devriez être en mesure de le faire:

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver 

(Notez que j'ai enlevé le '.java' de la fin)

+1

C'était presque correct, j'ai aussi dû ajouter ./ à mon classpath, donc la dernière ligne de commande était java -classpath ./::/mysql- .jar LoadDriver –

+0

En fait, vous n'avez pas besoin de mysql-connector -java-5.1.12-bin.jar dans votre classpath lors de la compilation, car le pilote n'est nécessaire que lors de l'exécution (il est chargé par réflexion). – FRotthowe

2

Version courte:
javac vous oblige à mettre le .java à la fin, java vous oblige à ne pas mettre le .java à la fin. Comme Jim Garrison l'a noté avant de supprimer sa réponse, cette ligne de commande pour exécuter le programme est erronée.

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 

Ceci indique Java pour charger LoadDriver/java.class

Qu'est-ce que vous voulez réellement est

java -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver 

condition bien sûr que vous compilez d'abord avec

javac -classpath ./mysql-connector-java-5.1.12-bin.jar LoadDriver.java 
0

Le problème est pas pilote manquant, c'est la classe LoadDriver manquante. Vous devez d'abord compiler le fichier source .java dans un fichier .class:

javac LoadDriver.java 
Questions connexes