Firebird NoClassDefFoundError trotz erfolgreichem Class.forName(...) unter Linux

Status
Nicht offen für weitere Antworten.
Hallo,
mein Java-Programm soll sich mit einer Firebird Datenbank, die auf einem Rechner im lokalen Netzwerk liegt verbinden. Solange sich mein Java-Programm hier auf meinem Windows-Rechner befindet und läuft, funktioniert das ganze. Muss sich wohl um ein Linux-Problem handeln oder? Kennt sich da jemand aus?

Hier der Inhalt der Funktion, die letztendlich aufgerufen wird:

[java=352]
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String query = "";
try
{
System.out.print("Lade Klasse...");
Class.forName("org.firebirdsql.jdbc.FBDriver");
System.out.println("ok.");
System.out.print("Verbinde mit Datenbank im lokalen Netzwerk...");
con = DriverManager.getConnection(db_URL,db_User,db_PW);
System.out.println("ok.");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

query = "SELECT * FROM Personen";
rs = stmt.executeQuery(query);

//...
}
catch (SQLException e)
{

System.out.println(query + "\n\n");
e.printStackTrace(System.out);
throw e;
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
[/code]


Und hier die Ausgabe in der Konsole:

Code:
Lade Klasse...ok.
Verbinde mit Datenbank im lokalen Netzwerk...Exception in thread "Thread-3" java.lang.NoClassDefFoundError: org.firebirdsql.jdbc.FBConnection
   at java.lang.Class.initializeClass(libgcj.so.81)
   at java.lang.Class.forName(libgcj.so.81)
   at java.lang.Class.forName(libgcj.so.81)
   at org.firebirdsql.gds.ClassFactory.get(ClassFactory.java:61)
   at org.firebirdsql.gds.impl.wire.WireGDSFactoryPlugin.getConnectionClass(WireGDSFactoryPlugin.java:29)
   at org.firebirdsql.gds.impl.GDSFactory.getConnectionClass(GDSFactory.java:334)
   at org.firebirdsql.jca.FBManagedConnectionFactory.newConnection(FBManagedConnectionFactory.java:826)
   at org.firebirdsql.jca.FBManagedConnection.getConnection(FBManagedConnection.java:482)
   at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:73)
   at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:119)
   at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:131)
   at java.sql.DriverManager.getConnection(libgcj.so.81)
   at java.sql.DriverManager.getConnection(libgcj.so.81)
   at VerbindungsAufbauThread.getMapping(Test.java:362)
   at VerbindungsAufbauThread.run(Test.java:251)
Caused by: java.lang.ClassNotFoundException: java.sql.SQLClientInfoException not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/home/Test/lib/jaybird-full-2.1.5.jar,file:/home/Test/bin/], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.81)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.81)
   at java.lang.ClassLoader.loadClass(libgcj.so.81)
   at java.lang.ClassLoader.loadClass(libgcj.so.81)
   at java.lang.Class.forName(libgcj.so.81)
   at java.lang.Class.initializeClass(libgcj.so.81)
   ...14 more


Wie man erkennen kann, geht die Zeile mit dem Class.forName ohne Probleme durch, aber erst bei con = DriverManager.getConnection(db_URL,db_User,db_PW); kommt die Exception.

Weiß jemand Rat?

MfG
 
M

maki

Gast
Du nutzt nicht die SUN JRE, versuche mal [c]update-alternatives --config java[/c] und [c]update-alternatives --config javac[/c] als Root und stelle die Sun Varianten als Standard ein.
Falls diese nicht installiert sind, ist das der nächste Schritt ;)
 
Oha!!!

Es gibt mehrere Anbieter bei denen man Java laufen lassen kann??? Dieses Linux ist echt eine andere Welt! Wer installiert denn mehrere verschiedene Java's auf einem Rechner??? Ich meine... ok, ich hab unter Windows auch noch Ordner herumliegen mit Java 1.5.xx aber ich wechsel in Linux ausdrücklich in das Verzeichnis von SUN und führe dort das Java aus. Dass der sich dann trotzdem eines anderen Java's bedient, da wär ich erst recht nie drauf gekommen!!!

Jetzt kommt wenigstens die Meldung, "Bad version number in .class file". Ich wollte schon den post hier editieren und fragen wieso ich unter Windows diese Meldung bekomme, wenn ich versuche mein Java 1.6 Programm mit java 1.5 aufzurufen, aber unter Linux niemand meckert...

Also ich denke ich weiß was jetzt noch zu tun ist -> Java 1.6 auf die Linux-Kiste.

Vielen Dank @ maki !!!
 
Als absoluter Linux-Nichtskönner hab ichs hinbekommen das Java 1.6 zu installieren.

Eine unglaubliche Verkettung ungünstiger Umstände! Weißt was des Rätsels Lösung eigentlich war? Ein fehlendes "./" vor dem Aufruf von Java in der Shell... daher nahm er auch das falsche Java, führte es aber trotzdem aus. Komischerweise ohne Versions-Check. Kompiliert wurde es hier auf Windows mit 1.6, aber ausgeführt von GNU? mit Version 1.5

Hab viel gelernt heute...

Danke nochmals!
 
M

maki

Gast
Kompiliert wurde es hier auf Windows mit 1.6, aber ausgeführt von GNU?
Deswegen hab ich geschrieben einmal die Konfig für die JVM und dann für das JDK auszuführen, [c]java[/c] und [c]javac[/c] sind eben 2 paar Schuhe.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Verbindungsproblem zu Firebird DB Datenbankprogrammierung 3
C firebird problem Datenbankprogrammierung 5
C Firebird Datenbank Datenbankprogrammierung 2
D PostgreSQL vs Firebird vs Derby Datenbankprogrammierung 12
T Firebird .fdb: Öffnen und Exportieren Datenbankprogrammierung 1
E Dringend Hilfe Firebird/Jaybird verbindet nicht; im jar file Datenbankprogrammierung 4
K jar Datei startet nicht aufgrund Firebird(?) Datenbankprogrammierung 3
G FireBird installieren Datenbankprogrammierung 3
P fireBird/ IF EXISTS Datenbankprogrammierung 4
D Firebird Embedded dlls Datenbankprogrammierung 3
S Auf Firebird 2.0 zugreifen mit Jaybird Datenbankprogrammierung 6
G Umlaut-Problem mit Firebird Datenbanken Datenbankprogrammierung 8
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
J Welche Firebird Variante kann ich hosten Datenbankprogrammierung 6
S Squirrel - Connect schlägt fehl mit NoClassDefFoundError: sun/io/UnknownCharacterException Datenbankprogrammierung 0
T Hsqldb: java.lang.NoClassDefFoundError: org/hsqldb/Server Datenbankprogrammierung 2
E Jar File: NoClassDefFoundError: oracle/sql/ORAData Datenbankprogrammierung 2
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
E ClassNotFoundException bei verschiedenen MS SQL Treibern trotz Classpath-Eintrag Datenbankprogrammierung 5
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
V 3x selbes Ergebnis trotz 3x verschiedene Ergebnisse? Datenbankprogrammierung 2
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
A NullPointerException trotz getConnection Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben