Java - Laden von Datenbanktreibern nicht möglich

Hallo,

ich habe versucht den Datenbanktreiber von Acces 2007 in Java zu laden, es kam jedoch eine Fehlermeldung.
Dann habe ich versucht den MySQL/J-Connector Driver zu laden, doch auch da kam die selbe Fehlermeldung.


public class DatenbankZugriff {

    public static void main(String[] args) {
        try {
            //Treiber laden  
            Class.forName("com.mysql.jdbc.Driver").newInstance();
          
	} catch(Exception e) {
            e.printStackTrace();
	}
    }
    
}```

Fehlermeldung:

> java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> 	at java.lang.Class.forName0(Native Method)
> 	at java.lang.Class.forName(Class.java:259)
> 	at datenbankzugriff.DatenbankZugriff.main(DatenbankZugriff.java:22)


Was habe ich flasch gemacht? 

Danke schonmla im Voraus

die .jar Datei des Treibers ist nicht im Classpath

Danke für die Hilfe.

Bedeutet das, dass der Treiber an jedem Rechner in den Classpath muss, an dem die Java-Anwendung ausgeführt werden soll?

[QUOTE=AngryOnion]Danke für die Hilfe.

Bedeutet das, dass der Treiber an jedem Rechner in den Classpath muss, an dem die Java-Anwendung ausgeführt werden soll?[/QUOTE]

Ja

Gibt es denn eine Möglichkeit, Verbindung zu einer Datenbank (Access 2007 oder MySQL) herzustellen, ohne den Treiber auf jedem Gerät zu installieren? Das man am Ende mit einer .jar-Datei auskommt?

Nein. :heul:

Den Datenbanktreiber musst du nicht installieren. Du kannst den Treiber (die JAR-Datei) zu deiner Anwendung hinzufügen (Build Path), wenn du sie als executable JAR erstellst. Dann ist der Treiber Teil deiner Anwendung und wird mit dieser auch weitergegeben.

Das klingt schonmal gut!

Ich habe jetzt in NetBeans den Treiber zum Classpath hinzugefügt, und trotzdem tritt die selbe Fehlermeldung weiterhin auf…

Edit:
Habe jetzt die .jar-Datei in NetBeans direkt zu meinem Projekt dem Ordner Libraries hinzugefügt und zack - der Treiber kann geladen werden!

Aber wo bekomme ich den Treiber für Access 2007 her?
Habe es mit “sun.jdbc.odbc.JdbcOdbcDriver” versucht, aber da kommt wieder die ‘ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver’-Fehlermeldung.

Na ja, “ClassNotFound” heisst ja soviel wie: “Klasse nicht gefunden”. Du wirst halt den Treiber nicht richtig eingebunden haben. Bei Eclipse leg ich mir die benötigten Dateinen (JARs) in ein Verzeichnis z.B. lib in den Projektordner, klicke dann mit rechter Maustaste auf die Treiberdatei und füge sie dem Build Path hinzu. Bei NetBeans wird das wohl ähnlich funktionieren…

@AngryOnion dein Bild kann ich leider nicht angucken, der Firmenproxy lässt mich nicht durch

Deswegen hier mal eine kurze Anleitung:
in Netbeans klickt man mit der rechten Mousetaste auf den Projektnamen -> Properties -> Libraries -> add JAR/Folder bei Compile

Dankeschön, das habe ich jetzt soweit auch hinbekommen, klappt mit dem MySQL-Treiber auch wunderbar :slight_smile:

Aber ich werde auf jeden Fall mit einer Access 2007-Datenbank arbeiten müssen (.accdb).
Und jetzt finde ich nicht heraus, wie oder woher ich den Treiber für Acces 2007-Datenbanken herbekomme…

Schonmal bei Google “Java Treiber Access 2007” eingegeben?

Das habe ich in der Tat gemacht!

Geholfen hat mir das nicht wirklich.
Ich bin jetzt so weit, dass das mit dem “Standard Ocdb-Jcdb-Treiber” funktionieren soll.

Dafür habe ich aber auch keine extra .jar-Datei, die ich in den Libraries-Ordner stecken kann und ich habe es schon Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) versucht. Es kommt wieder die ClassNotFoundException.

schau mal ob in den Standard-Libraries von Netbeans was dabei ist, einfach auf “Add Library…” klicken, dort gibt es (zumindest bei mir) die “Java DB Driver”-Library

Die taucht bei mir leider nicht auf.

*** Edit ***

Einfacher Datenbankzugriff mittels Konsolenprogramm
Grundsätzlich muss als erstes der passende Datenbanktreiber geladen werden. Wir verwenden die JDBC-ODBC-Bridge die bei der JDK mitgeliefert wird.
Der Datenbanktreiber ist eine Klasse. Seine Aufgabe ist es, ein Objekt dieser Klasse zu erzeugen und beim Treibermanager anzumelden. Dies geschieht mittels Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
So dies wollen wir nun in einem kleinen Beispiel einsetzen, bei dem wir danach auch noch gleich die Verbindung zur Datenbank herstellen.

Wieso kann ich den Treiber dann nicht laden? :o

bie einer kurzen Internet-Suche hab ich gesehen, das es wohl Probleme gibt, wenn man eine 64bit jvm hat. Wie zum Beispiel hier

*** Edit ***

Was mir noch einfällt, welche Netbeans Version hast du denn?

Ein Access-Treiber funktioniert nur auf einem Windows-System. Wenn das Programm auch auf anderen Systemen laufen muss kann man für Access-"DB"s auf Jaccess setzen.

Im Wiki gibt es den Code zur Verbindung zu einer Access-“DB”, bei dem die Registrierung der ODBC-Quellen nicht notwendig ist. Quasi braucht kein Treiber installiert zu werden. Das funktioniert aber nur unter Windows.
Access-Verbindung - Variante ohne Registrierung der ODBC Datenquellen

Wie man eine Datenbank unter Netbeans einbinden kann, findet man ebenfalls im Wiki.

Ich arbeite zur Zeit ausschließlich an Windows-Systemen. Doch trotzdem funktioniert die im Wiki beschriebene Variante ohne Registrierung leider nicht. Ich bekomme für ‘Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);’ eine ClassNotFoundException.

Das Einbinden von Treiber in NetBeans habe ich soweit verstanden, aber wi bekomme ich den geeigneten Treiber für MS Acces 2007 her?

Was ist Jacces? Jaccess finde ich nur im Zusammenhang mit Joomla!.

Kannst du auch mal noch sagen, welches Windows du aktuell benutzt und ob da auch MS Office installiert ist? Außerdem wäre noch die benutzte Java-Version interessant.

Ich habe das selbst mal ausprobiert. Lief auf einem Windows XP mit Java 5 und einem MS Office 2003 problemlos.

Ups, sorry. Der Fehler kam durch einen Tippfehler meinerseits zu Stande. Jackess muss es heißen.
Hier auch noch der Link dorthin: http://jackcess.sourceforge.net/