Hi,
ich habe ein hoffentlich kleines Problem mit meinem Prgoramm und zwar versuche ich einen Datenbank Treiber von Apachen ( Derby ) über einen Classloader zu laden.
Der Classloader selber funktioniert auch bestens:
Ich muss den Treiber über einen Classloader laden, da er nicht im CLASSPATH vorhanden ist.
Die Funktion getLocation() gibt den Absolutenppfad zum Prgorammverzeichnis.
Nun zum Problem:
Bei dem Verbindungsaufbau bekomme ich eine SQLException die mir sagt, dass der Treiber nicht geladen ist.
Kann mir vielleicht jemand helfen wo mein Fehler oder denk Fehler ist?
Ich wäre für jede Hilfe dankbar...
MFG
Marc Kohlbau
PS: Wenn ich den Klassloader an anderer Stelle nutze funktioniert auch alles wunderbar.
Hier noch ein Beispiel:
ich habe ein hoffentlich kleines Problem mit meinem Prgoramm und zwar versuche ich einen Datenbank Treiber von Apachen ( Derby ) über einen Classloader zu laden.
Der Classloader selber funktioniert auch bestens:
Code:
static Object newInstance( String path, String classname ) throws Exception
{
URL url = new File( getLocation() + path ).toURI().toURL();
URLClassLoader cl = new URLClassLoader( new URL[]{ url } );
Class<?> c = cl.loadClass( classname );
return c.newInstance();
}
Ich muss den Treiber über einen Classloader laden, da er nicht im CLASSPATH vorhanden ist.
Die Funktion getLocation() gibt den Absolutenppfad zum Prgorammverzeichnis.
Nun zum Problem:
Code:
Object a = KlassenLader.newInstance("Treiber/derby.jar", "org.apache.derby.jdbc.EmbeddedDriver");
// Wenn der Treiber in dem CLASSPATH liegen würde, läd man so den Treiber
// dies funktioniert auch.
//Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
//Verbindung zur Datenbank aufbauen
connection = DriverManager.getConnection("jdbc:derby:database/system_dbs;create=true;");
Bei dem Verbindungsaufbau bekomme ich eine SQLException die mir sagt, dass der Treiber nicht geladen ist.
Kann mir vielleicht jemand helfen wo mein Fehler oder denk Fehler ist?
Ich wäre für jede Hilfe dankbar...
MFG
Marc Kohlbau
PS: Wenn ich den Klassloader an anderer Stelle nutze funktioniert auch alles wunderbar.
Hier noch ein Beispiel:
Code:
Object Look = KlassenLader.newInstance("Treiber/synthetica.jar", "de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel");
UIManager.setLookAndFeel((LookAndFeel) Look);