Comment installer le pilote JDBC dans le 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 pas de double bocal dans mon chemin de construction, de sorte que la solution ne fonctionne pas pour moi. J'ai cherché google pendant quelques heures maintenant, mais aucune des solutions que j'ai trouvé là-bas résoudre réellement mon problème. Je crée un site Web avec une connectivité de base de données pour faire mes devoirs. J'utilise une base de données MySQL, évoluant dans Eclipse et tournant sous Windows.

je reçois 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>");
    }
}
//...

quand j'exécute le code ci-dessus, j'obtiens la sortie suivante:

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

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

  1. Téléchargement mysql-connector.
  2. mettez-le dans mon dossier MySQL C:Program FilesMySQLmysql-connector-java-5.1.12mysql-connector-java-5.1.12-bin.jar .
  3. a ouvert les propriétés du projet à Eclipse.
  4. ajouter pot externe à mon chemin de construction et j'ai choisi mysql-connector-java-5.1.12-bin.jar .

chaque fois que j'essaie d'utiliser le servlet, j'obtiens la même erreur, peu importe si j'ai le bocal ou pas. Tu peux m'aider à comprendre?

22
demandé sur Community 2010-03-01 02:34:36

13 réponses

comme pour toute bibliothèque" tierce-partie "dans la saveur d'un fichier JAR qui doit être utilisé par le webapp, il suffit de copier/déposer le fichier JAR physique dans /WEB-INF/lib de webapp . Il sera alors disponible dans classpath par défaut de webapp. Eclipse est assez intelligente pour le remarquer. Pas besoin de tracasser avec buildpath. Cependant, assurez-vous de supprimer toutes les références inutiles que vous avez ajoutées avant, sinon il pourrait entrer en collision.

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

voir aussi:

52
répondu BalusC 2017-05-23 11:47:36

puisque vous l'utilisez dans servlet , vous devez avoir le bocal accessible par le conteneur servlet . Soit vous incluez le connecteur dans votre application war , soit vous le mettez dans le cadre de la bibliothèque étendue du conteneur servlet et de la gestion des sources de données, s'il en existe une. La deuxième partie dépend totalement du conteneur que vous avez.

4
répondu DJ. 2010-02-28 23:41:53

les autres ont raison sur le fait de mettre le pot de conducteur à la disposition de votre container servlet. Mon commentaire visait à suggérer que vous vérifiiez à partir de la ligne de commande si le conducteur lui-même est intact.

plutôt qu'un main() vide, essayez quelque chose comme ceci, adapté de la documentation incluse:

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

sur mon quai, je ferais ceci:

$ ls mysql-connector-java-5.1.12-bin.jar 
mysql-connector-java-5.1.12-bin.jar
$ javac LoadDriver.java 
$ java -cp mysql-connector-java-5.1.12-bin.jar:. LoadDriver

Sur votre plate-forme, vous devez utiliser ; comme le séparateur de chemin, comme discuté ici et ici .

3
répondu trashgod 2010-03-02 15:56:26

Place mysql-connector-java-5.1.6-bin.jar vers le dossier \Apache Tomcat 6.0.18\lib. Votre problème sera résolu.

3
répondu Satya 2010-12-29 12:16:39

il suffit de suivre ces étapes:

1) installer eclipse

2) Importer Apache à eclipse

3) installer mysql

4) Télécharger mysqlconnector / J

5) Décompressez le fichier zip à naviguer à travers elle jusqu'à ce que vous obtenez le fichier bin. Ensuite, placez tous les fichiers qui sont présents dans le dossier contenant bin à C:\Program Files\mysql\mysql server5.(1)/ donnez alors le même chemin que l'adresse définition du pilote dans eclipse.

c'est très facile.

1
répondu Rajat 2012-03-11 04:01:05

Ce que vous ne devriez pas faire (surtout quand on travaille sur un projet partagé)

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

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

bonne solution 1

créer" dossier 151930920". mettez là toute votre lib ' externe. ensuite, mappez ce dossier en tant que dépendance à votre projet. dans eclipse vous avez besoin de

  1. ajoutez votre dossier à la build path
    1. Project Properties -> Java build path
    2. Libraries - > ajouter lib externe ou toute autre solution pour ajouter vos fichiers / dossier
  2. ajouter votre chemin de construction à deployment Assembly ( référence )
    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 génération que vous pouvez spécifiez pour inclusion dans votre guerre finie.
    4. sélectionnez ceux que vous voulez et cliquez sur Terminer.

Bonne solution 2

utiliser maven (ou toute autre solution) pour gérer la dépendance à l'égard du projet

1
répondu oak 2017-05-23 11:47:36

si le problème persiste,

Mettre l'- mysql-connector-java-5.0.8-bin jar dans un endroit de votre répertoire Tomcat- > lib - >(peu importe où vous avez installé votre Tomcat). Et modifiez votre variable d'environnement (en cliquant sur Propriétés de votre ordinateur-Paramètres Système avancés - variables D'environnement-et définissez un nouveau nom de variable et des valeurs variables comme l'endroit où votre fichier lib réside.N'oubliez pas d'entrer a ; à 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 coller le bocal dans le même endroit où votre pot mysql réside (c'est-à-dire à L'intérieur de Tomcat-lib.

Nettoyez votre projet-arrêtez votre serveur - essayez enfin d'exécuter.

0
répondu Praveen 2012-10-21 12:07:06

plusieurs fois j'ai été confronté à ce problème, j'ai connu ClassNotFoundException. si le pot n'est pas à l'emplacement physique.

alors assurez-vous .fichier jar(mysql connector) dans l'emplacement physique de la WEB-INF dossier lib. et assurez-vous de redémarrer Tomcat en utilisant la commande shutdown dans cmd. il devrait fonctionner.

0
répondu agiles 2012-10-30 03:49:27

la seule solution qui a fonctionné pour moi est de mettre le .jar file under WEB-INF / lib . Espérons que cela aidera.

0
répondu karthik339 2012-11-13 12:47:41

si votre projet est basé sur maven, ajoutez-le à votre POM:

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

Enregistrer > Construire > et le test de la connexion à nouveau. Il fonctionne! Votre version actuelle du connecteur Java mysql peut varier.

0
répondu Kingz 2013-10-04 19:33:46

Put mysql-connector-java-5.1.38-bin.jar to the C:\Program fichiers\Apache Software Foundation\Tomcat 7.0\lib folder.by faire ce programme avec execute

0
répondu Rutvik patel 2016-03-15 07:32:14
Right click on the Project, go to Properties. 
Choose Deployment Assembly (if not found, read the update part) from the left pane. 
Check if Java Build Path Entries are provided. 
If not, click on Add and include it. If it is already present, click Add to include your connector jar as Archive. 
Do a Project>Clean, restart your Server.
0
répondu Pankaj Mandale 2017-05-01 12:35:26

pour cette erreur:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

vous avez besoin de:

Import java.sql.*;
Import com.mysql.jdbc.Driver;

même si son non utilisé jusqu'à ce que l'application fonctionne.

-2
répondu Ant3G 2013-03-21 12:20:24