# Treiber wird nicht gefunden



## Marsman (28. Jun 2007)

Hallo Ihr!

Mein Programm findet die Treiber-Klasse "com.mysql.jdbc.Driver" nicht. Ich vermute, das Problem hängt mit dem Classpath zusammen. Wenn ich im Manifest für das JAR-Archiv den Classpath angebe, wird der Treiber gefunden. Das möchte ich aber nicht. Laut Dokumentation zum Treiber soll man unter Windows eine Umgebungsvariable CLASSPATH setzen:

CLASSPATH=C:\Programme\MySQL\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar

Funktioniert aber bei mir nicht. Auch die Angabe direkt beim Befehl Java bringt nichts:

Java -classpath C:\Programme\MySQL\mysql-connector-java-5.0.4\mysql-connector-java-5.0.4-bin.jar -jar Programm.jar

Was mache ich denn nur falsch? Ich habe heute fast den ganzen Tag gesucht, auch auf diversen Seiten im Internet, kann aber das Problem nicht lösen.


Titus


----------



## Halunken-Joe (30. Jun 2007)

So wie ich das verstanden habe kannst Du den Treiber an verschiedenen Stellen hinterlegen.

Ich arbeite mit Eclipse halte den Treiber lokal vor und füge ihn über den BuildPath in das Projekt ein. 

Eine andere Methode wäre es den Treiber nicht irgendwo lokal vorzuhalten sondern in einem PATH der schon angelegt ist.  Beispiel für Windows: C:\Programme\Java\jrexxx\lib\ext   Das ist etwas praktischer weil Du beim nächsten Programm die zusätzlichen librarys ebenfalls hier reinlegen kannst (also minimaler Aufwand).

Ich bevorzuge die erste Variante weil sie meiner Meinung nach übersichtlicher ist.



Falls Du Deine Sachen am Ende auf einen Server deployst: Du darfst nicht vergessen den Treiber serverseitig dem Servletcontainer bekannt zu machen.


----------



## Marsman (2. Jul 2007)

Halunken-Joe hat gesagt.:
			
		

> Ich arbeite mit Eclipse halte den Treiber lokal vor und füge ihn über den BuildPath in das Projekt ein.



Ich auch.  :wink:



			
				Halunken-Joe hat gesagt.:
			
		

> Falls Du Deine Sachen am Ende auf einen Server deployst: Du darfst nicht vergessen den Treiber serverseitig dem Servletcontainer bekannt zu machen.



Es geht bei mir erstmal nur um eine Desktop-Anwendung. Wenn ich die Treiber-Bibliothek mit Eclipse imporiere und die Anwendung über Eclipse aufrufe, funktioniert es auch. Wenn ich dann aber mit Eclipse ein Archiv erstelle und dieses z.B. über die "Eingabeaufforderung" von Windows mit dem Befehl Java starte, wird der Treiber nicht gefunden. Und zwar auch dann nicht, wenn ich ihn im Classpath bekannt mache. Vermutlich mache ich dabei etwas falsch. Nur was???  :cry: 

Titus


----------



## Murray (2. Jul 2007)

Wenn du mit der "-jar"-Option arbeitest, wird der Classpath nicht ausgewertet; in diesem Fall müssen sich alle benötigten Klassen entweder direkt in dem einen Jar-File oder aber im lib\ext-Verzeichnis der JRE befinden (letzteres ist aber Java's Reimplementierung der Windows-DLL-Hölle und daher nicht unbedingt zu empfehlen)


----------



## Marsman (3. Jul 2007)

Murray hat gesagt.:
			
		

> Wenn du mit der "-jar"-Option arbeitest, wird der Classpath nicht ausgewertet



Aha, das erklärt einiges. Bedeutet das nicht aber, dass ich den Treiber (und evtl. weitere Bibliotheken anderer Hersteller) mit in mein Archiv packen muss?? Und wenn ja, wie kann ich das unter Eclipse möglichst einfach bewerkstelligen? Oder ist es besser, das Treiber-Archiv in mein Programmverzeichnis zu kopieren und mit auszuliefern?

Titus


----------



## Marsman (4. Jul 2007)

Hallo Ihr!

Leider habe ich nach meinem letzten Post keine Antwort mehr zu dem Thema bekommen. Mir ist die Sache mit dem Treiber immer noch nicht ganz klar. Denn wenn ich den Treiber mit in mein Archiv packe, würde das ja bedeuten, dass meine Anwendung nur mit diesem einen Treiber und damit mit einer einzigen Datenbank läuft. Außerdem wäre Updates des Treibers nicht möglich. Das kann meiner Ansicht nach nicht sinnvoll sein.

Auch dass bei Angabe der Option -jar beim Befehl java der Classpath ignoriert wird, ist zwar laut Sun dokumentiert. Ich kann aber denn Sinn nicht verstehen. Ich habe inzwischen auch die beiden Beiträge in der FAQ hier im Foum zu diesem Thema gelesen. Aber auch daraus geht nicht hervor, wie eine mit -jar ausgeführte Anwendung Archive von Drittherstellern finden soll.

Ich würde mich freuen, wenn dazu nochmal jemand den entscheidenden Tipp geben könnte.  :lol: 

Titus


----------

