# Probleme mit Laden des JDBC-Treiber in HSQLDB



## Guest (22. Aug 2007)

Hallo zusammen,

ich hab ein Java-Applet geschrieben, das eine HSQLDB-Datenbank verwendet. Solange ich das Programm in Eclipse laufen lasse, funktioniert alles einwandfrei. Möchte ich das Applet aber über einen Browser starten, erhalte ich folgenden Fehler:   :? 

ERROR: failed to load HSQLDB JDBC driver.
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
	at sun.applet.AppletClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.applet.AppletClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
                ...
Caused by: java.io.FileNotFoundException: D:\...\...\xy\org\hsqldb\jdbcDriver.class (Das System kann den angegebenen Pfad nicht finden)

Auf den ersten Blick erschien mir der Fehler logisch, da der Ordner org\hsqldb\... im Package ...\xy\*buchungssystem* und nicht im Ordner ...\*xy* liegt. Verschiebe ich nun den Ordner org nach xy, sodass der gewünschte Pfad existiert, erhalte ich jedoch eine neue Exception:  :?  :? 

java.sql.SQLException: File input/output error: java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
	at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
	at org.hsqldb.jdbcDriver.connect(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
                ...
	at java.lang.Thread.run(Unknown Source)

Wenn ich im Quellcode anstatt

```
...
try {
	        Class.forName("org.hsqldb.jdbcDriver");
	    } catch (Exception e) {
	        System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
	        e.printStackTrace();
	        return;
	    }
...
```
nun

```
...
try {
	        Class.forName("buchungssystem.org.hsqldb.jdbcDriver");
	    } catch (Exception e) {
	        System.out.println("ERROR: failed to load HSQLDB JDBC driver.");
	        e.printStackTrace();
	        return;
	    }
...
```
schreibe (also das Wurzelpackage "buchungssystem" - in dem alles weitere enthalten ist - hinzufüge) kommt die nächste Exception. :x 

Langsam krieg ich echt die Kriese. Hat irgend jemand eine Idee, woran das liegen könnte? In Eclipse läuft es doch!
(Übrigens, die jar-Datei ist in den build-path eingebunden.) 
Ich bin über jede Anregung sehr dankbar! Vielen Dank schon vorab für jeden Hinweis.

Viele Grüße,
Matze


----------



## Guest (22. Aug 2007)

Ohh ja, der Sandkasten funktioniert.   

Verpacke das Applet mit allem, was dazu gehört in eine einzige Jar-Datei, dann wird dein Problem mit dem Classpath
gelöst sein. Mit "Alles in eine Jar-Datei" meine ich nicht Jar-Dateien in Jar-Dateien verpacken, sondern alles in eine
einzige Jar-Datei.

Dein nächstes Problem, welches noch kommt wink, hängt damit zusammen, dass das Applet nicht signiert ist und somit
keine Zugriffsberechtigung auf Sockets bzw. die Datenbank hat.


----------



## Guest (23. Aug 2007)

Hallo!

Danke für die schnelle Antwort.
Hm, eigentlich wollte ich nur die .class-files auf den Server laden und kein .jar-file. Es gibt zwei verschiedene Benutzeroberflächen zu dem Buchungssystem - eine für Administratoren und eine für Gäste. Kann ich die jeweils benötigten Klassen auch aus einem .jar-file starten? (Wie?  :roll: )




> Verpacke das Applet mit allem, was dazu gehört in eine einzige Jar-Datei, dann wird dein Problem mit dem Classpath
> gelöst sein. Mit "Alles in eine Jar-Datei" meine ich nicht Jar-Dateien in Jar-Dateien verpacken, sondern alles in eine
> einzige Jar-Datei.


Die Datenbank greift ja auf das hsqldb.jar-file zu. Muss ich dieses .jar-file (und alle anderen .jar-files (wie z.B. mail.jar), die ich im build-path eingebunden habe) wirklich entpacken?




> Dein nächstes Problem, welches noch kommt (), hängt damit zusammen, dass das Applet nicht signiert ist und somit
> keine Zugriffsberechtigung auf Sockets bzw. die Datenbank hat.


Wenn die Datenbank im Working-Space des Programms integriert ist muss doch das Applet nicht signiert sein, oder?


Viele Grüße und Danke für alle Antworten,
Matze


----------

