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



## diabolik (23. Mrz 2007)

Hallo zusammen,

ich kollabier hier gleich. Ich versuche seit 1,5 Tagen eine Verbindung zum mySQL-Server aufzunehmen und immer wieder jammert JAVA, daß der obige Treiber nicht gefunden werden kann.


Ich habe die Datei "mysql-connector-java-5.0.5-bin.jar" in einem Ordner "C:\mySQL\" abgelegt.
Habe diesen Pfad dann wiederum als CLASSPATH im WIN2000 bekannt gegeben.

Frage ich über eine DOS-Box mit "echo %CLASSPATH%" selbigen ab, wird mir auch der korrekte Pfad zurückgegeben. Dennoch Jammert JAVA.

Ich nutze NetBeans als Entwicklungsumgebung. NetBeans selbst kann den Treiber in  der *.JAR-Datei finden, wenn ich den eigens mitgebrachten Database-Connector nutze. Aber das bringt mir herzlich wenig...


Hat noch irgendjemand einen Tipp? 

Kann ich vielleicht auch direkt im Quellcode den Pfad des Treibers angeben? Das wäre doch die einfachste Variante...

Oder gibt es einen Standard-ClassPath, den Java auf jeden Fall durchsucht und wo ich dann die *.JAR-Datei hinterlegen könnte?


----------



## SlaterB (23. Mrz 2007)

wie startest du das Programm denn?
in einer IDE, mit java von der Konsole?

du könntest die Libary mal ins Grundverzeichnis deines Projektes kopieren und darauf achten, dass der . in deinem CLASSPATH ist,

außerdem mal deinen CLASSPATH posten


----------



## diabolik (23. Mrz 2007)

Ich starte das Programm direkt aus NetBeans, also in einer IDE.


Diesen Code rufe ich direkt aus dem laufenden Programm über einen Button auf.


```
import java.net.*;
import java.sql.*;
import java.sql.DriverManager;

public class mySQL {
private static java.sql.Connection connection;
private static java.sql.Statement statement;
private static java.sql.ResultSet resultSet;
private static java.sql.ResultSetMetaData resultSetMetaData;
private static String dbDriver;
private static String dbHost;
private static String dbPort;
private static String dbUrl;
private static String dbTable;
private static String userName;
private static String password;
   
    
    public mySQL() {
    }    
    
    public static void setDataBaseDriver(){        
        dbDriver = "com.mysql.jdbc.Driver";  
    }    
    public static void setServer(){
        dbHost = ServerData.getMySQLServer();  
    }     
    public static void setDataBasePort(){
        dbPort = "3306";
    }   
    public static void setTabelName(){
        dbTable = "Kunden";
    }    
    public static void setUserName(){
        userName = ***;
    }     
     public static void setPassword(){
        password = ***;
    }
     
    public static void getDataFromDB(){
         try {
        // Select fitting database driver and connect:
        dbUrl =  "jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbTable;   
        Class.forName(dbDriver).newInstance();
        
      ...
      ...
    }
```
Mein Classpath lautet:

Name:    CLASSPATH
Wert:     C:\mySQL\mysql-connector-java-5.0.5-bin.jar


Ähhmm, wie meinst Du das mit "dass der . in Deinem CLASSPATH ist" ?


----------



## SlaterB (23. Mrz 2007)

CLASSPATH: .;C:\mySQL\mysql-connector-java-5.0.5-bin.jar


. = aktuelles Verzeichnis

http://mitglied.lycos.de/aaaa3/ENV/umgebungsvariable.html

------

ist aber nur für die Konsole interessant und bei Jars sollte man wirklich die Jar direkt benennen, stimmt,

also
z.B. 
CLASSPATH: .;mysql-connector-java-5.0.5-bin.jar

wenn die jar im Grundverzeichnis des Projektes ist,
aber das gilt nur für das java-Kommando von der Konsole aus,
das funktioniert vielleicht jetzt schon? (Punkt muss auf jeden Fall mit rein)

für NetBeans musst du wahrscheinlich die Library in irgendwelchen Einstellungen importieren,
der System-CLASSPATH wird dort nicht unbedingt verwendet


----------



## diabolik (23. Mrz 2007)

Danke. Werde mich gleich mal umsehen.


----------



## KSG9|sebastian (23. Mrz 2007)

Sorry, aber bei deinem Code bluten mir die Augen.

Du hast zwar ne Klasse, aber darin nur statische Variablen und Funktionen. Deine Setter-Methoden haben keinen Parameter um irgendwas zu setzen. Klassennamen werden groß geschrieben. Du importiers java.sql, schreibst aber dann java.sql.Connection.
Wuargh 
Schau dir mal die Codingguidelines von Sun an. Link ist im Forum FAQ. Und auch sonst mal Grundlagen OOP u.s.w. anschauen.

Edit:
getDataFromDb() soll (zumindest sagt das der Namen) irgendwas aus der Datenbanklesen.
Ha, tut es aber nicht 
Die Methode lädt nen Treiber, erzeugt ne Instanz und macht keine Ahnung was. Aber ohne Rückgabewert gibt sie bestimmt keine Daten aus der DB zurück.
Mal ganz kurz was zu Konventionen


```
public class MySql{
  private String connectionUrl;
  private String username;
  private String password;

  public void setConnectionUrl(String newUrl){
      this.connectionUrl = newUrl;
  }
  public String getConnectionUrl(){
      return this.connectionUrl;
  }
  .. entsprechend für die anderen Properties ..
}
```

Gruß seb


----------

