web-dev-qa-db-fra.com

Comment installer le pilote JDBC dans un projet Web Eclipse sans faire face à Java.lang.ClassNotFoundexception

Il y a une question TRÈS similaire à la mienne, mais dans mon cas, je n'ai aucun fichier dupliqué dans mon chemin de génération, la solution ne fonctionne donc pas pour moi. Je recherche Google depuis quelques heures maintenant, mais aucune des solutions que j'ai trouvées ne résout réellement mon problème. Je crée un site Web avec une connectivité de base de données pour un devoir. J'utilise une base de données MySQL, développée sous Eclipse et exécutée sous Windows.

Je continue à obtenir Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver avec le code suivant:

import Java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
    Connection connection = null;
    PreparedStatement query = null;
    try {

        out.println("Create the driver instance.<br>");
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        out.println("Get the connection.<br>");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
        query = connection.prepareStatement( "SELECT * FROM customers");

        //...
    } catch (Exception e)
    {
        out.println(e.toString()+"<br>");
    }
}
//...

Lorsque je lance le code ci-dessus, j'obtiens la sortie suivante:

Create the driver instance.
Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Cela ne dépasse pas la ligne Class.forName... et je ne comprends pas pourquoi! Voici ce que j'ai fait: 

  1. Téléchargez mysql-connector. 
  2. Mettez-le dans mon dossier MySQL C:\Program Files\MySQL\mysql-connector-Java-5.1.12\mysql-connector-Java-5.1.12-bin.jar
  3. Ouvert les propriétés du projet dans Eclipse. 
  4. Ajouter un fichier JAR externe à mon chemin de construction et j'ai sélectionné mysql-connector-Java-5.1.12-bin.jar.

Chaque fois que j'essaie d'utiliser la servlet, le même message d'erreur s'affiche, que le fichier jar soit présent ou non. Pourriez-vous m'aider à comprendre cela?

22
Kiril

En ce qui concerne chaque bibliothèque "tierce partie" à la manière d'un fichier JAR devant être utilisé par l'application Web, copiez/supprimez simplement le fichier JAR physique dans le /WEB-INF/lib de l'application Web. Il sera alors disponible dans le classpath par défaut de webapp. En outre, Eclipse est suffisamment intelligent pour le remarquer. Pas besoin de s'embarrasser avec buildpath. Cependant, assurez-vous de supprimer toutes les références inutiles que vous avez ajoutées auparavant, sinon cela pourrait entrer en collision.

Une alternative consiste à l'installer sur le serveur lui-même en déposant le fichier JAR physique dans le dossier /lib du serveur. Cela est nécessaire lorsque vous utilisez une source de données de pool de connexions JDBC fournie par le serveur, qui nécessite à son tour le pilote JDBC MySQL.

Voir également:

52
BalusC

Comme vous l'exécutez dans servlet, le fichier jar doit être accessible par le conteneur servlet . Vous pouvez inclure le connecteur dans votre application war ou le placer dans la bibliothèque étendue du conteneur de servlet et les éléments de gestion de la source de données, le cas échéant. La deuxième partie dépend totalement du conteneur que vous avez.

4
DJ.

Placez le fichier mysql-connector-Java-5.1.6-bin.jar dans le dossier\Apache Tomcat 6.0.18\lib. Votre problème sera résolu.

3
Satya

Les autres ont raison de mettre le fichier JAR du pilote à la disposition de votre conteneur de servlets. Mon commentaire visait à vous suggérer de vérifier à partir de la ligne de commande si le pilote lui-même est intact.

Plutôt qu'une main() vide, essayez quelque chose comme ceci, adapté de la documentation fournie:

public class LoadDriver {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
    }
}

Sur ma plate-forme, je ferais ceci:

mysql-connector-Java-5.1.12-bin.jar 
 mysql-connector-Java-5.1.12-bin.jar 
 -connector-Java-5.1.12-bin.jar :. LoadDriver 

Sur votre plate-forme, vous devez utiliser ; comme séparateur de chemin, comme indiqué précédemment ici et ici .

3
trashgod

Il suffit de suivre ces étapes:

1) Installer Eclipse
2) Importer Apache dans Eclipse
3) Installer MySQL
4) Téléchargez mysqlconnector/J
5) Décompressez le fichier compressé pour le parcourir jusqu'à ce que vous obteniez le fichier bin. Placez ensuite tous les fichiers présents dans le dossier contenant bin dans C:\Program Files\mysql\mysql server5.1 /, Puis indiquez le même chemin que l'adresse tout en définissant le pilote dans Eclipse.

C'est tous les gars très faciles.

1
Rajat

Ce que vous ne devriez pas faire (surtout lorsque vous travaillez sur un projet partagé)

Ok, après avoir eu le même problème et après avoir lu certaines réponses ici et ailleurs. il semble que mettre external lib dans WEB-INF/lib n’est pas une bonne idée car il pollute webapp/JRE libs with server-specific libraries - pour plus d’informations, vérifiez cette réponse "

Une autre solution que je ne recommande PAS est la suivante: pour le copier dans le dossier Tomcat/lib. bien que cela puisse fonctionner, il sera difficile de gérer la dépendance pour un projet partagé (git par exemple).

Bonne solution 1

Créez le dossier vendor. mettez là toute votre bibliothèque externe. mappez ensuite ce dossier en tant que dépendance de votre projet. dans Eclipse vous devez 

  1. ajoutez votre dossier au build path
    1. Project Properties -> Java build path
    2. Libraries -> ajouter une bibliothèque externe ou toute autre solution pour ajouter vos fichiers/dossiers
  2. ajoutez votre chemin de construction à deployment Assembly ( reference )
    1. Project Properties -> Deployment Assembly
    2. Add -> Java Build Path Entries
    3. Vous devriez maintenant voir la liste des bibliothèques sur votre chemin de construction que vous pouvez spécifier pour inclusion dans votre fichier WAR fini.
    4. Sélectionnez ceux que vous voulez et cliquez sur Terminer.

Bonne solution 2

Utilisez maven (ou n’importe quelle alternative) pour gérer la dépendance du projet 

1
oak

Plusieurs fois, j'ai été confronté à ce problème, j'ai connu ClassNotFoundException . Si jar n'est pas à l'emplacement physique.

Assurez-vous donc que le fichier .jar (connecteur mysql) se trouve à l’emplacement physique du dossier lib WEB-INF. et assurez-vous de redémarrer Tomcat en utilisant la commande shutdown dans cmd . cela devrait fonctionner.

0
agiles

en supposant que votre projet repose sur Maven, ajoutez-le à votre POM:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <version>5.1.26</version>
    </dependency>

Enregistrez> Construire> et testez à nouveau la connexion. Ça marche! La version actuelle du connecteur Java MySQL peut varier.

0
Kingz

Mon problème était un peu différent. Au lieu de jdbc:Oracle:thin:@server:port/service je l'ai eu comme server:port/service.

jdbc:Oracle:thin:@ dans l'attribut url de GlobalNamingResources.Resource était manquant. Mais j'ai négligé l'exception de Tomcat 

Java.sql.SQLException: Cannot create JDBC driver of class 'Oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'
0
Anand Rockzz

Si le problème persiste encore,

Placez le fichier jar - Mysql-connector-Java-5.0.8-bin à l'intérieur du dossier Tomcat-> lib-> (où que vous ayez installé votre Tomcat). Et changez votre variable d'environnement (Terminé en cliquant sur Propriétés de Mycomputer -Paramètres système avancés- Variables d'environnement-Et définissez un nouveau nom de variable et des valeurs de variable comme l'emplacement de votre fichier lib. N'oubliez pas de saisir un; à la fin du chemin )

Si le problème persiste, essayez de télécharger commons-collections-2.0.jar ( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html ) et collez le fichier jar dans le même endroit où votre jar mysql réside (c.-à-d.) dans Tomcat-lib.

Nettoyez votre projet - Arrêtez votre serveur - Enfin, essayez de courir.

0
Praveen

La seule solution qui a fonctionné pour moi est de placer le fichier .jar sous WEB-INF/lib. J'espère que cela aidera. 

0
karthik339

Mettez mysql-connector-Java-5.1.38-bin.jar dans le dossier C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib.exécutez ce programme avec execute 

0
Rutvik patel