Wie installieren Sie den JDBC-Treiber in Eclipse-web-Projekt, ohne mit java.lang.ClassNotFoundexception
Es gibt eine SEHR ähnliche Frage zu mir, aber in meinem Fall habe ich keine doppelte Gläser in meinem build-path, so dass die Lösung nicht für mich arbeiten. Ich habe bei google eine Suche für ein paar Stunden jetzt, aber keine der Lösungen die ich gefunden habe, es tatsächlich zu lösen mein Problem. Ich bin erstellen einer Webseite mit einer Datenbank-Konnektivität für die Hausaufgaben. Ich verwende eine MySQL Datenbank, die Entwicklung in Eclipse und unter Windows.
Ich immer 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 oben stehenden code ausführen, bekomme ich die folgende Ausgabe:
Create the driver instance.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Ist es nicht vorbei die Class.forName...
Linie und ich kann nicht herausfinden, warum! Hier ist was ich getan habe:
- Download-mysql-connector.
- Steckte es in meine MySQL Ordner
C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar
. - Öffnete die Projekteigenschaften in Eclipse.
- Add External Jar zu meinem Build Path und ich wählte
mysql-connector-java-5.1.12-bin.jar
.
Jedes mal, wenn ich Versuch, das servlet bekomme ich die gleiche Fehlermeldung, unabhängig davon, ob ich das Glas drin oder wenn ich nicht. Könnten Sie mir helfen, dies herauszufinden?
java -cp C:\Program Files\MySQL\mysql-connector-java-5.1.12-bin.jar;...
Ich habe gerade eine dummy-test-Projekt mit einer leeren Main-Klasse:
..\Test\src>java -cp "C:\Program Files\MySQL\mysql-con nector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar"; Main.java Exception in thread "main" java.lang.NoClassDefFoundError: Main/java
InformationsquelleAutor Kiril | 2010-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als für jeden "3rd-party" - Bibliothek im Geschmack von einer JAR-Datei, die verwendet werden, die von der webapp, einfach kopieren/ablegen der JAR-Datei im webapp ist
/WEB-INF/lib
. Es wird dann in der webapp ist der Standard-classpath. Auch Eclipse ist smart genug, das zu bemerken. Keine Notwendigkeit zu ärger mit buildpath. Stellen Sie jedoch sicher, entfernen Sie alle unnötigen Referenzen aus, die Sie vorher Hinzugefügt, sonst kollidieren.Alternative ist, es zu installieren im server selbst, indem Sie die JAR-Datei im server-eigenen
/lib
Ordner. Dies ist erforderlich, wenn Sie über server bereitgestellte JDBC-connection pool data source, die wiederum die Bedürfnisse der JDBC-Treiber für MySQL.Siehe auch:
diesen Abschnitt in das Projekt Build Path ist zur compile-Zeit classpath. Haben Sie das GLAS, um am Ende in runtime-classpath wie gut, fügen Sie es in Projekt Deployment Assembly " - Liste als gut. Beachten Sie, dass dies letztlich endet es mit einem GLAS in
/WEB-INF/lib
wenn wir den KRIEG gebaut worden bzw. exportiert werden. Also warum nicht werfen Sie es direkt dort in den ersten Platz?Ich DANKE IHNEN so sehr.. ich konnte nicht herausfinden, warum der gleiche code in einer java-Anwendung, aber nicht im servlet..Deine Antwort, funktioniert Super 🙂
Für jemand neuen zu Eclipse, können Sie fügen Sie die jar in Ihr Projekt mit der Bereitstellung in der Montage gehen Sie zu Eigenschaften - >', - Bereitstellung Baugruppe' > 'Hinzufügen...' > 'Java Build Path-Einträge" und wählen Sie Ihre Glas. 🙂
InformationsquelleAutor BalusC
Seit Sie laufen Sie in
servlet
zu können, müssen Sie die jar-zugänglich von der servlet-container. Sie gehören entweder der connector als Teil Ihrer Anwendungwar
oder legen Sie es als Teil der servlet-container, die erweiterte Bibliothek und datasource-management-Zeug, wenn er eines hat. Der zweite Teil ist ganz angewiesen auf den container, den Sie haben.Ort mysql-connector-java-5.1.6-bin.jar die \Apache-Tomcat-6.0.18\lib-Ordner
Dank satya dein trick funktioniert bei mir
InformationsquelleAutor DJ.
Den anderen Recht zu machen die Treiber-JAR zur Verfügung, um Ihr servlet-container. Mein Kommentar gemeint war, zu vermuten, dass Sie überprüfen Sie in der Befehlszeile, ob der Treiber selbst ist intakt.
Eher als eine leere
main()
, versuchen Sie so etwas wie dieses, angepasst an die Dokumentation:Auf meine Plattform, ich würde dies tun:
Auf Ihre Plattform, die Sie verwenden müssen
;
als Pfad-separator, wie besprochen hier und hier.InformationsquelleAutor trashgod
Platz mysql-connector-java-5.1.6-bin.jar die \Apache-Tomcat-6.0.18\lib-Ordner. Ihr problem wird gelöst werden.
DataSource
nicht, wenn der OP ist das hantieren mitDriverManager
manuell. Für, die Platzierung JAR in webapp ist/WEB-INF/lib
wie in meiner Antwort ist mehr als ausreichend.Ich habe versucht, alle andere, elegantere Ansätze - und scheiterte. Brute-force - platzieren Sie es in der lib haben - gearbeitet. Dank
InformationsquelleAutor Satya
Folgen Sie einfach diesen Schritten:
1) Installieren Sie eclipse
2) Importieren Sie Apache, eclipse
3) Installieren Sie mysql
4) Download mysqlconnector/J
5) Entpacken Sie die Zip-Datei zu navigieren, bis Sie die bin-Datei. Dann legen Sie alle Dateien in den Ordner bin C:\Program Files\mysql\mysql-server5.1/
dann geben Sie den gleichen Pfad wie die Adresse, die bei der Festlegung der Treiber in eclipse.
Das ist alles sehr einfach, Jungs.
InformationsquelleAutor Rajat
Was Sie nicht tun sollten tun (vor allem bei der Arbeit an einem gemeinsamen Projekt)
Ok, nach der hatte das gleiche Problem und nach dem Lesen einiger Antworten hier und an anderen Orten. es scheint, dass die Inbetriebnahme
external lib
inWEB-INF/lib
ist nicht, dass eine gute Idee, da espollute webapp/JRE libs with server-specific libraries
- für mehr Informationen, prüfen Sie diese Antwort"Andere Lösung, die ich NICHT empfehlen ist: kopieren es in das tomcat/lib-Ordner. obwohl dies kann funktionieren, wird es schwierig sein, zu verwalten Abhängigkeit für eine gemeinsame(git zum Beispiel) Projekt.
Gute Lösung 1
Erstellen
vendor
Ordner. legen Sie dort alle Ihre externen lib. ordnen Sie dann diesen Ordner als Abhängigkeiten zu Ihrem Projekt. in eclipse müssen Siebuild path
Project Properties
->Java build path
Libraries
-> hinzufügen der externen lib oder eine andere Lösung, um Ihre Dateien/Ordnerdeployment Assembly
(Referenz)Project Properties
->Deployment Assembly
Add
->Java Build Path Entries
Gute Lösung 2
Verwenden
maven
(oder alternative) zum verwalten von Projekt-AbhängigkeitInformationsquelleAutor oak
Wenn das problem weiterhin besteht,
Setzen Sie die-
mysql-connector-java-5.0.8-bin-jar-in eine Stelle innerhalb der Tomcat->lib->Ordner (egal wo Sie installiert haben, Ihre Tomcat). Und ändern Sie Ihre Umwelt-Variablen (Erfolgt durch klicken auf Eigenschaften von Arbeitsplatz -Erweiterte Systemeinstellungen - Umgebungsvariablen-Und legen Sie eine neue variable name & variable Werte als der Ort, an dem die lib-Datei befindet.Vergessen Sie nicht, geben Sie ein ; am Ende des Pfades)
Wenn noch das problem weiterhin besteht
Versuchen Sie den Download commons-collections-2.0.jar (http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html) und fügen Sie die jar im gleichen Ort, wo Sie Ihre mysql-jar befindet (dh), die im Tomcat-lib.
Reinigen Sie Ihre Projekt-Stoppen Sie Ihre server - Schließlich versuchen zu fliehen.
InformationsquelleAutor Praveen
Viele Male habe ich schon mit diesem problem konfrontiert, habe ich erfahren, ClassNotFoundException.
wenn Glas nicht am physischen Standort.
So stellen Sie sicher,.jar-Datei(mysql-connector), in der der physische Standort der WEB-INF lib-Ordner. und
stellen Sie sicher, Neustart Tomcat, indem Sie mit shutdown Befehl in cmd.
es sollte funktionieren.
InformationsquelleAutor agiles
Die einzige Lösung, die für mich gearbeitet ist, setzen die .jar-Datei unter WEB-INF/lib . Hoffe, das wird helfen.
InformationsquelleAutor karthik339
vorausgesetzt, Ihr Projekt maven basiert, fügen Sie es zu Ihrem POM:
Speichern - > Build > und testen Sie die Verbindung erneut. Es funktioniert! Ihre tatsächliche mysql-java-connector-version variieren kann.
InformationsquelleAutor
Setzen mysql-connector-java-5.1.38-bin.jar der C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib folder.by dieses Programm mit ausführen
InformationsquelleAutor Rutvik patel
Mein Problem war etwas anders. Statt
jdbc:oracle:thin:@server:port/service
ich hatte es alsserver:port/service
.Fehlte, war
jdbc:oracle:thin:@
imurl
Attribut in GlobalNamingResources.Ressource. Aber ich übersehen tomcat AusnahmeInformationsquelleAutor Anand Rockzz
für diesen Fehler:
müssen Sie:
selbst wenn seine nicht verwendet wird, bis die app läuft.
InformationsquelleAutor Ant3G