java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver

golliwogg

Mitglied
Hallo,
ich bin kurz vorm Verzweifeln, kriege immer diesen Fehler beim Ausführen der class im Terminal. Im Eclipse funktioniert es wunderbar. Habe schon mit classpath herumgespielt und den Treiber schließlich (hsqldb.jar) ins gleiche Verz. wie die class kopiert - es hilft alles nichts.

System ist Lubuntu, DB ist hsqldb via jdbc

wer weiß was? Vielen Dank im Voraus für jeden Hinweis.
Gruß, Volker

Quellcode:

Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnectDB {

	public ConnectDB() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		//
	    String ConnectURL = "jdbc:hsqldb:file:/home/volker/Dokumente/Datenbank/LibreDB";
	    String user = "SA";
	    String pw = "";
	    Connection conn = null;
	    
		try {
			Class.forName("org.hsqldb.jdbcDriver").newInstance();
		} catch (Exception e) {
			System.err.println("Treiber konnte nicht geladen werden!");
			System.err.println(e);
			System.exit(-1);
		}
		System.out.println("Treiber wurde geladen!");
		try {
			conn = DriverManager.getConnection(ConnectURL, user, pw);
		} catch (SQLException e) {
			System.err.println("Datenbank-Connect fehlgeschlagen!");
			System.err.println(e);
			System.exit(-1);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("Datenbank connected!");		
		try {
			Statement stmt = conn.createStatement();
			String query = "SELECT * FROM \"test\"";
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				System.out.println(rs.getInt("tst_id") + "\t" + rs.getString("tst_name") + "\t");
			}
			rs.close();
			stmt.close();
		} catch (SQLException e) {
			System.err.println("SQL-Fehler!");
			System.err.println(e);
			System.exit(-1);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
 
Ich führe das Programm im Terminal aus. Wechsle ins Projektverzeichnis, Unterverz. bin, und gebe diese Befehlszeile ein: java ConnectDB, was zu der Meldung führt: java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver. Und auch mit der Option -cp ./ findet er den Treiber nicht, der sich im gleichen Verz. befindet.
 
Versuch mal bitte.

Code:
java -cp ./hsqldb.jar:. ConnectDB

In Eclipse gibt es die schöne Möglichkeit sich den Classpath anzeigen zu lassen, den Eclipse verwendet.

Dazu starte das Programm im Debug-Modus und halte irgendwo an (Breakpoint). Dann kannst du in der Debug-View auf den Prozess rechts klicken und sich über Properties die Commandline ansehen. Und da kannst du sehen, wie Eclipse den Classpath zusammenbastelt.
 
Hey, super! So funktioniert es. So was ähnliches hatte ich auch schon probiert. Ich hatte die Beschreibung dieser Commandline Option so verstanden, dass man nach dem -cp den Pfad angeben muss wo das Jar-File liegt ... denkste!

Vielen Dank 🙂
 

Zurück
Oben