Hallo,
Ich bin dabei ein eigenes PlugIn-System zu backen. Dazu übergebe ich ein JAR-File den URLClasslaoder. Die JAR-Datei hat ca. folgenden Aufbau:
plugin.jar:
driver.jar:
In der config.xml steht u.a. drin, welche Klasse gestartet werden soll (zB RunMe.class) <- Das funktioniert!
Wenn aber die "RunMe" Klasse aus einer anderem JAR etwas benötigt (zB "driver.Test"), so soll man angeben können, welche JARs (zB \libs\driver.jar) in den PlugIn-ClassPath hinzugefügt werden sollen. <-- so wars geplant...
Um das hin zu bekommen hab ich folgendes versucht:
1. Ich hab den URLClassloader abgeleitet und so die Methode "addURL()" auf public geschaltet.
2. Dem URLClassloader hab ich "file:/plugin.jar" geben. (funktioniert!)
3. Lese aus der "\META-INF\config.xml" "\libs\driver.jar" aus. (funktioniert!)
4. Mache aus "\libs\driver.jar" -> "jar:file:/plugin.jar!libs\driver.jar" (keine Exception!)
5. Suche die Klasse "driver.Test" aus der driver.jar. <--- Aber dann Fehlanzeige! :?:
Wo liegt mein Denkfehler?
Kann man "addURL()" nicht einfach nachträglich verwenden? (oder vielleicht nur im Konstruktor?)
"jar:file:/plugin.jar!libs\driver.jar" <-- interpretiert der Classloader das so wie ich das denke: Da ist eine JAR in einer JAR und die innere JAR soll zu Classpath hinzugefügt werden... ?
naja .. danke fürs Lesen und für hilfreiche Antworten...
Clemens
Ich bin dabei ein eigenes PlugIn-System zu backen. Dazu übergebe ich ein JAR-File den URLClasslaoder. Die JAR-Datei hat ca. folgenden Aufbau:
plugin.jar:
Code:
\
\META-INF\config.xml
\classes\RunMe.class
\libs\driver.jar
driver.jar:
Code:
\driver\Test.class
In der config.xml steht u.a. drin, welche Klasse gestartet werden soll (zB RunMe.class) <- Das funktioniert!
Wenn aber die "RunMe" Klasse aus einer anderem JAR etwas benötigt (zB "driver.Test"), so soll man angeben können, welche JARs (zB \libs\driver.jar) in den PlugIn-ClassPath hinzugefügt werden sollen. <-- so wars geplant...
Um das hin zu bekommen hab ich folgendes versucht:
1. Ich hab den URLClassloader abgeleitet und so die Methode "addURL()" auf public geschaltet.
2. Dem URLClassloader hab ich "file:/plugin.jar" geben. (funktioniert!)
3. Lese aus der "\META-INF\config.xml" "\libs\driver.jar" aus. (funktioniert!)
4. Mache aus "\libs\driver.jar" -> "jar:file:/plugin.jar!libs\driver.jar" (keine Exception!)
5. Suche die Klasse "driver.Test" aus der driver.jar. <--- Aber dann Fehlanzeige! :?:
Wo liegt mein Denkfehler?
Kann man "addURL()" nicht einfach nachträglich verwenden? (oder vielleicht nur im Konstruktor?)
"jar:file:/plugin.jar!libs\driver.jar" <-- interpretiert der Classloader das so wie ich das denke: Da ist eine JAR in einer JAR und die innere JAR soll zu Classpath hinzugefügt werden... ?
naja .. danke fürs Lesen und für hilfreiche Antworten...
Clemens