web-dev-qa-db-de.com

So installieren Sie den JDBC-Treiber in einem Eclipse-Webprojekt, ohne Java.lang.ClassNotFoundexception gegenüberzustellen

Es gibt eine sehr ähnliche Frage an meine, aber in meinem Fall habe ich keine doppelten Gläser in meinem Build-Pfad, daher funktioniert die Lösung für mich nicht. Ich habe Google schon ein paar Stunden lang gesucht, aber keine der Lösungen, die ich dort gefunden habe, löst mein Problem tatsächlich. Ich erstelle eine Website mit einigen Datenbankverbindungen für Hausaufgaben. Ich verwende eine MySQL-Datenbank, entwickle in Eclipse und laufe unter Windows.

Ich erhalte ständig Java.lang.ClassNotFoundException: com.mysql.jdbc.Driver mit dem folgenden Code:

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>");
    }
}
//...

Wenn ich den obigen Code ausführen, erhalte ich die folgende Ausgabe:

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

Es kommt nicht an der Class.forName...-Linie vorbei und ich kann nicht verstehen, warum! Folgendes habe ich getan: 

  1. Mysql-Connector herunterladen. 
  2. Legen Sie es in meinen MySQL-Ordner C:\Program Files\MySQL\mysql-connector-Java-5.1.12\mysql-connector-Java-5.1.12-bin.jar
  3. Öffnet die Projekteigenschaften in Eclipse. 
  4. Fügen Sie meinem Erstellungspfad ein externes Glas hinzu, und ich habe mysql-connector-Java-5.1.12-bin.jar ausgewählt.

Jedes Mal, wenn ich versuche, das Servlet zu verwenden, erhalte ich dieselbe Fehlermeldung, unabhängig davon, ob das Glas da ist oder nicht. Könnten Sie mir helfen, das herauszufinden?

22
Kiril

Wie für jede "3rd-Party" -Bibliothek im Geschmack einer JAR-Datei, die von der Webapp verwendet werden soll, kopieren Sie die physische JAR-Datei einfach in den /WEB-INF/lib von Webapp. Es ist dann im Standardklassenpfad von webapp verfügbar. Außerdem ist Eclipse klug genug, das zu bemerken. Sie müssen sich nicht mit buildpath herumärgern. Entfernen Sie jedoch alle unnötigen Verweise, die Sie zuvor hinzugefügt haben. Andernfalls könnte es zu Kollisionen kommen.

Eine Alternative ist die Installation auf dem Server selbst, indem die physische JAR-Datei im /lib-Ordner des Servers abgelegt wird. Dies ist erforderlich, wenn Sie eine vom Server bereitgestellte JDBC-Verbindungspool-Datenquelle verwenden, die wiederum den MySQL-JDBC-Treiber benötigt.

Siehe auch:

52
BalusC

Da Sie es in servlet ausführen, müssen Sie über das Servlet-Container auf die JAR zugreifen können. Sie fügen den Connector entweder als Teil Ihrer Anwendung war oder als Teil der erweiterten Bibliothek des Servlet-Containers und der Datenquellenverwaltungssachen (falls vorhanden) bei. Der zweite Teil ist völlig abhängig von dem Container, den Sie haben.

4
DJ.

Platzieren Sie mysql-connector-Java-5.1.6-bin.jar im Ordner\Apache Tomcat 6.0.18\lib. Ihr Problem wird gelöst.

3
Satya

Die anderen haben Recht, die Treiber-JAR für Ihren Servlet-Container verfügbar zu machen. Mein Kommentar sollte darauf hinweisen, dass Sie in der Befehlszeile überprüfen, ob der Treiber selbst intakt ist.

Anstelle eines leeren main() versuchen Sie Folgendes, angepasst an die mitgelieferte Dokumentation:

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

Auf meiner Plattform würde ich Folgendes tun:

 $ 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 :. Lasttreiber

Auf Ihrer Plattform müssen Sie ; als Pfadtrennzeichen verwenden, wie hier und hier .

3
trashgod

Folgen Sie einfach diesen Schritten:

1) Installieren Sie Eclipse
2) Importieren Sie Apache in Eclipse
3) Installieren Sie mysql
4) Laden Sie mysqlconnector/J herunter
5) Entpacken Sie die gezippte Datei, navigieren Sie durch sie, bis Sie die bin-Datei erhalten. Legen Sie dann alle Dateien, die sich im Ordner mit bin befinden, unter C:\Programme\mysql\mysql server5.1 /.__ ab. Geben Sie dann den gleichen Pfad wie die Adresse an, während Sie den Treiber in Eclipse definieren.

Das sind alles sehr leichte Leute.

1
Rajat

Was Sie nicht tun sollten (insbesondere wenn Sie an einem gemeinsamen Projekt arbeiten)

Ok, nachdem hatten wir das gleiche Problem und nachdem ich einige Antworten hier und an anderen Orten gelesen hatte. Es scheint, dass das Einfügen von external lib in WEB-INF/lib keine so gute Idee ist, da pollute webapp/JRE libs with server-specific libraries - weitere Informationen finden Sie in dieser Antwort "

Eine andere Lösung, die ich NICHT empfehle, ist: , um sie in den Tomcat/lib-Ordner zu kopieren. Obwohl dies möglicherweise funktioniert, ist es schwierig, die Abhängigkeit für ein gemeinsam genutztes Projekt (z. B. für git) zu verwalten.

Gute lösung 1

vendor-Ordner erstellen. Setzen Sie dort Ihre gesamte externe Bibliothek. Ordnen Sie dann diesen Ordner als Abhängigkeit zu Ihrem Projekt zu. in Eclipse musst du 

  1. fügen Sie Ihren Ordner zum build path .__ hinzu.
    1. Project Properties -> Java build path
    2. Libraries -> füge externe lib oder eine andere Lösung hinzu, um deine Dateien/Ordner hinzuzufügen
  2. fügen Sie Ihren Build-Pfad zu deployment Assembly ( reference ) .__ hinzu.
    1. Project Properties -> Deployment Assembly
    2. Add -> Java Build Path Entries
    3. Sie sollten jetzt die Liste der Bibliotheken in Ihrem Build-Pfad sehen, die Sie für die Aufnahme in Ihre fertige WAR angeben können.
    4. Wählen Sie die gewünschten aus und klicken Sie auf Fertig stellen.

Gute Lösung 2

Verwenden Sie maven (oder eine beliebige Alternative), um die Projektabhängigkeit zu verwalten 

1
oak

Oft habe ich mit diesem Problem zu tun gehabt, ich habe ClassNotFoundException . Erlebt, wenn sich jar nicht an der physischen Position befindet.

Stellen Sie daher sicher, dass die .jar-Datei (MySQL-Connector) am physischen Ort des WEB-INF-lib-Ordners gespeichert ist. und Stellen Sie sicher, dass Sie Tomcat mit dem Befehl shutdown in cmd . neu starten. Es sollte funktionieren.

0
agiles

wenn Ihr Projekt auf Maven basiert, fügen Sie es Ihrem POM hinzu:

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

Speichern Sie> Erstellen> und testen Sie die Verbindung erneut. Es klappt! Ihre aktuelle Version des mysql Java Connectors kann variieren.

0
Kingz

Mein Problem war etwas anders. Anstelle von jdbc:Oracle:thin:@server:port/service hatte ich es als server:port/service.

Fehlendes jdbc:Oracle:thin:@ im url-Attribut in GlobalNamingResources.Resource. Aber ich habe die Ausnahme von Tomcat übersehen 

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

Wenn das Problem weiterhin besteht,

Platzieren Sie das J -ar - Mysql-connector-Java-5.0.8-bin an einem Ort in Ihrem Tomcat-> lib-> -Ordner (unabhängig davon, wo Sie Ihren Tomcat installiert haben). Und ändern Sie Ihre Umgebungsvariable (Fertig, indem Sie auf Eigenschaften von Mycomputer - Erweiterte Systemeinstellungen - Umgebungsvariablen - klicken. Legen Sie einen neuen Variablennamen und einen neuen Variablenwert als den Ort fest, an dem sich Ihre lib-Datei befindet. Vergessen Sie nicht, am Ende des Pfads ein; )

Wenn das Problem weiterhin besteht Versuchen Sie, commons-Collections-2.0.jar ( http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html ) herunterzuladen, und fügen Sie das Jar in dasselbe ein Ort, an dem sich Ihr MySQL-Jar in Tomcat-lib befindet (dh).

Reinigen Sie Ihr Projekt. Stoppen Sie Ihren Server. Versuchen Sie schließlich, es auszuführen.

0
Praveen

Die einzige Lösung, die für mich funktioniert hat, ist, die .jar-Datei unter WEB-INF/lib abzulegen. Hoffe das wird helfen. 

0
karthik339

Legen Sie den mysql-connector-Java-5.1.38-bin.jar in den Ordner C:\Programme\Apache Software Foundation\Tomcat 7.0\lib.der. Führen Sie dieses Programm mit Ausführen aus 

0
Rutvik patel