Connect zu ACCESS-DB mit Ucanaccess

GuenniMo

Mitglied
Hallo,

ich administriere ein geografisches Informationssystem, für das u.a. eine eigene Skriptsprache auf der Basis von Java entwickelt wurde. Ein Bestandteil dieses Systems ist JRE7 (derzeit kein Update auf 8 möglich). Aus diesem System heraus muss ich eine ACCESS-Datenbank "befüllen" und wollte mich hierzu "Ucanaccess" bedienen. Dafür habe ich mir die neueste Version 5.0.1 heruntergeladen, die fünf jar-Dateien in den Classpath gesteckt und das Ganze getestet, musste jedoch feststellen, dass diese wohl JRE8 erfordert.

Folgende Fehlermeldung wird dabei ausgeworfen (Auszug aus dem Log):
*EXEC*sqlconnect
[1]=net.ucanaccess.jdbc.UcanaccessDriver
[2]=DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
[3]=X
[4]=X
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedClassVersionError: net/ucanaccess/jdbc/UcanaccessDriver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)

.
.
.


Also habe ich die Version 4.0.4 herunter geladen und das Ganze erneut getestet in der Hoffnung, dass diese Version mit JRE7 klarkommt.

hierbei wird jedoch keine Datenbankverbindung erstellt, weil angeblich kein Treiber gefunden wird.

Error while connecting: sqlconnect:connect:No suitable driver found for DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
Error while closing connection: Fehlerhaftes Argument: DB-Verbindung ist null.

Hier die Java-Version (an der ich nicht vorbeikomme):
1651495484642.png


Mein Betriebssystem:

1651495574412.png

Nun meine Frage:

Welche Version von "Ucanaccess" muss ich verwenden, damit das Ganze mit der o.g. JRE7 funktioniert?

Gibt es ggf. Alternativen (Bitte OHNE ODBC)?

Vielen Dank im Voraus für Eure Mühe
 

KonradN

Super-Moderator
Mitarbeiter
Das Problem hast Du vermutlich richtig erkannt: Die verwendete Version hat alles in Java 8 übersetzt (Version 52). Daher musst Du ältere Versionen ausprobieren in der Hoffnung, dass es z.B. mit der 3er Version funktioniert.
 

LimDul

Top Contributor
Das 4er Release sollte laut Webseite reichen, weil bei 5.0.0 steht "Requires now Java 8".

Eigentlich sollte man folgendes nicht brauchen:
Code:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Aber probieren würde ich es trotzdem mal, ob das vor dem Jdbc-Connect funktioniert.
 

GuenniMo

Mitglied
Das Problem hast Du vermutlich richtig erkannt: Die verwendete Version hat alles in Java 8 übersetzt (Version 52). Daher musst Du ältere Versionen ausprobieren in der Hoffnung, dass es z.B. mit der 3er Version funktioniert.
Für die Version 3.0.7 war die JRE7 warscheinlich zu neu. Da gab es auch einen Versionskonflikt, aber scheinbar in die andere Richtung.

*EXEC*sqlconnect
[1]=net.ucanaccess.jdbc.UcanaccessDriver
[2]=DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
[3]=X
[4]=X
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedClassVersionError: net/ucanaccess/jdbc/UcanaccessDriver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
 

KonradN

Super-Moderator
Mitarbeiter
Prüfe bitte einmal den Classpath! Bist Du sicher, dass Du nicht die 5er Version im Classpath hast? Die Meldung besagt, dass die Klasse net.ucanaccess.jdbc.UcanaccessDriver in der Version 52.0 (= Java 8) vorliegt und daher nicht geladen werden kann. Java 7 wäre die Version 51.

Daher würde ich raten, das einmal zu prüfen. Nach dem, was @LimDul gefunden hat, wäre meine Erwartungshaltung, dass es mit der 4er Version klappen müsste.
 

GuenniMo

Mitglied
Das 4er Release sollte laut Webseite reichen, weil bei 5.0.0 steht "Requires now Java 8".

Eigentlich sollte man folgendes nicht brauchen:
Code:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Aber probieren würde ich es trotzdem mal, ob das vor dem Jdbc-Connect funktioniert.
Das hatte ich auch gelesen, deswegen hatte ich mir ja die 4.0.4 herunter geladen. Die Tatsache, dass er da keine Verbindung zustande brachte lag daran, dass ich die 5 jar-Dateien der Version 4.0.4 aus Versehen im falschen Ordner abgelegt hatte. Das hatte ich eben korrigiert und das Ganze nochmal getestet.

Auch hier lag dann der gleiche Versionskonflikt vor wie bei 3.0.7.

*EXEC*sqlconnect
[1]=net.ucanaccess.jdbc.UcanaccessDriver
[2]=DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
[3]=X
[4]=X
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedClassVersionError: net/ucanaccess/jdbc/UcanaccessDriver : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)


Version 5.0.1 ist zu neu und die beiden anderen scheinbar zu alt.
 

GuenniMo

Mitglied
Prüfe bitte einmal den Classpath! Bist Du sicher, dass Du nicht die 5er Version im Classpath hast? Die Meldung besagt, dass die Klasse net.ucanaccess.jdbc.UcanaccessDriver in der Version 52.0 (= Java 8) vorliegt und daher nicht geladen werden kann. Java 7 wäre die Version 51.

Daher würde ich raten, das einmal zu prüfen. Nach dem, was @LimDul gefunden hat, wäre meine Erwartungshaltung, dass es mit der 4er Version klappen müsste.
OK. Ich prüfe nochmal alles genau.

Vielen Dank euch beiden schon mal
 

GuenniMo

Mitglied
Ich hatte tatsächlich noch jar-Dateien der 5er-Version im Classpath. Nachdem ich nun alles bereinigt hatte, habe ich beginnend mit Version 3.0.7 alles nochmals getestet.

3.0.7:
Error while connecting: sqlconnect:connect:No suitable driver found for DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
Error while closing connection: Fehlerhaftes Argument: DB-Verbindung ist null.


4.04:
Error while connecting: sqlconnect:connect:No suitable driver found for DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
Error while closing connection: Fehlerhaftes Argument: DB-Verbindung ist null.


5.0.1
*EXEC*sqlconnect
[1]=net.ucanaccess.jdbc.UcanaccessDriver
[2]=DriverManager.getConnection("jdbc:ucanaccess://C:/temp/Wincan.mdb")
[3]=X
[4]=X
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedClassVersionError: net/ucanaccess/jdbc/UcanaccessDriver : Unsupported major.minor version 52.0


Ich bin da jetzt mit meinem Latein erst mal am Ende.
 

mihe7

Top Contributor
Hab das gerade mal getestet: funktioniert einwandfrei.

Code:
wget https://netcologne.dl.sourceforge.net/project/ucanaccess/archive/v4_archive/UCanAccess-4.0.4-bin.zip
mkdir mdb
cd mdb
tar -xzf ../jdk-7u45-linux-i586.tar.gz
unzip ../UCanAccess-4.0.4-bin.zip

Damit habe ich die beiden Verzeichnisse
Code:
jdk1.7.0_45
UCanAccess-4.0.4-bin

Jetzt noch Test.java erstellen:
Java:
import java.sql.*;

public class Test {
    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + args[0]);
        conn.close();
    }
}

Übersetzen
Code:
jdk1.7.0_45/bin/javac Test.java

Und mit
Code:
jdk1.7.0_45/bin/java -cp UCanAccess-4.0.4-bin/lib/commons-lang-2.6.jar:UCanAccess-4.0.4-bin/lib/commons-logging-1.1.3.jar:UCanAccess-4.0.4-bin/lib/hsqldb.jar:UCanAccess-4.0.4-bin/lib/jackcess-2.1.11.jar:UCanAccess-4.0.4-bin/ucanaccess-4.0.4.jar:. Test ./example.mdb
ausführen. Die Verbindung wird dann ohne Mucken aufgebaut und geschlossen (die ./example.mdb muss natürlich existieren :))
 

GuenniMo

Mitglied
Der Fehler ist gefunden. Das geografisches Informationssystem, mit dem ich da zugange bin, hatte ein Problem mit dem Doppelpunkt ("jdbc:ucanaccess://C://...."). Ich habe mir den Connection-String dann zusammengebaut (Sonderzeichen über ASCII-Code) und das hat dann funktioniert. Die Ucanaccess-Version 4.0.4 ist die richtige.
Vielen, vielen Dank nochmal an alle, die sich meinem Problem angenommen haben
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
S Squirrel - Connect schlägt fehl mit NoClassDefFoundError: sun/io/UnknownCharacterException Datenbankprogrammierung 0
M Oracle XA Connect auf zwei Datenbankinstanzen | fertiges Tool verfügbar? Datenbankprogrammierung 0
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
S MySQL generelles vorgehen beim connect zu entfernter datenbank Datenbankprogrammierung 3
F Connection refused: connect Bei Verbindungsherstellung zu MySQL Datenbank Datenbankprogrammierung 3
W Connect zu MSSQL will einfach nicht Datenbankprogrammierung 3
G DB2 Connect, welchen treiber? Datenbankprogrammierung 4
K "Connection timed out: connect" bei MySQL-Verbindu Datenbankprogrammierung 10
RaoulDuke JDBC Connect Timeout Datenbankprogrammierung 3
F connect zu Oracle 9i Datenbankprogrammierung 7
G mysql remote connect Datenbankprogrammierung 3
G Direkt-Connect aus Eclipse-RUN Ok, mit JAR Fehler ? Datenbankprogrammierung 6
G Warum klappt connect zur MySQL-DB nicht Datenbankprogrammierung 3
T Problem bei MySQL Connect über JavaBean Datenbankprogrammierung 3
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
J Unterschied @Id und @Access? Datenbankprogrammierung 5
MaxG. Access Datenbank Datenbankprogrammierung 48
I Access Datenbank in Table einlesen lassen Datenbankprogrammierung 2
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
W Access DB Metainfo hinzufügen Datenbankprogrammierung 8
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
Neumi5694 MS Access Sicherheit entfernen Datenbankprogrammierung 0
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
L mdb (access) ansteuern: Welcher weg ist der Beste Datenbankprogrammierung 3
D Java MS Access Verbindung Datenbankprogrammierung 10
Neumi5694 MS Access Tabellenbesitzer ändern Datenbankprogrammierung 0
V Datenbank Access einbinden Datenbankprogrammierung 11
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
R MS-Access mit JAva auslesen Datenbankprogrammierung 7
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
Gossi MySQL Access denied Datenbankprogrammierung 11
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
M Datenbankverbindung Access Datenbankprogrammierung 3
F Insert into Access Datenbankprogrammierung 3
C Access Datenbankprogrammierung 2
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
T Datenbankverbindung access funtioniert nicht Datenbankprogrammierung 21
E Access Datenbank, Linux Umgebung Datenbankprogrammierung 4
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
M Access Datensatz beinhaltet ESC-Zeichen Datenbankprogrammierung 3
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
K Access Datenbank mit Java auf win7 64bit Datenbankprogrammierung 14
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
P Access Datenbank durchsuchen Datenbankprogrammierung 8
M Problem mit Hibernate und Access Datenbankprogrammierung 9
S Datenbankapplikation von Access -> Java Datenbankprogrammierung 18
B MAC Access Datenbank in Java verwenden - Treiberproblem Datenbankprogrammierung 2
J mit java in access DB über odbc/jdbc Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
C MS Access und Jarkarta POI Datenbankprogrammierung 4
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
Q Access Datenbank in eine Internetseite einbinden Datenbankprogrammierung 2
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
N Wie kann ich Zugriff auf eine MS Access DB (mit JDBC) über Netzwerk erreichen? Datenbankprogrammierung 7
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
F Zugriff auf MS Access DB Datenbankprogrammierung 3
T Problem beim Update in die Access DB Datenbankprogrammierung 9
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
C MySQL langsamer als MS ACCESS Datenbankprogrammierung 5
J Zugriff auf Access-Datenbank Datenbankprogrammierung 3
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
X JDBC und MS-Access Sicherheitslücken? Datenbankprogrammierung 4
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
G "Adapter" Access -> MySQL? Datenbankprogrammierung 6
J Java DB Zugriff auf Access (Migration auf andere DB) Datenbankprogrammierung 8
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Java JDBC Access Datenstruktur Datenbankprogrammierung 2
V Überprüfen ob Tabelle existiert in Access per ODBC Datenbankprogrammierung 2
S Access vom Programm aus starten Datenbankprogrammierung 8
V Tabelle kopieren (Superbase -> Access) Datenbankprogrammierung 1
G Java und Access? Datenbankprogrammierung 3
D Problem mit Access abfrage Datenbankprogrammierung 10
D Access Datenbank in .jar-Datei Datenbankprogrammierung 51
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
E Wie auf MS-Access DB zugreifen? Datenbankprogrammierung 8
M Access Datenbank ! Datenbankprogrammierung 5
M Hilfe -Access mag sein Replace nciht merh Datenbankprogrammierung 2
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
U MS Access reservierte Wörter Datenbankprogrammierung 2
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
B Platzierung einer Access Datenbank Datenbankprogrammierung 4
V MS Access DB - Schreibschutz deaktivieren Datenbankprogrammierung 3
S PreparedStatements, Abfrageoptimierung unter MS Access Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben