G
Guest
Gast
Hallo zusammen,
ich habe folgendes Problem. Ich schreibe an einem Plugin welches wieder Plugins haben kann und ich müsste das jar wo die interfaces für die kommunikation zwischen plugin -> plugin enthalten sind nachträglich laden da es ja keinen
Sinn macht diese im CP vom Main Programm zu haben.
Aufbau:
Mainprogramm -> Plugin (Ebene1) -> Plugin (Ebene2)
Ebene 1 und Mainprogramm kommunizieren ganz normal da dem Mainprogramm seine Interfaces bekannt sind. Leider schaffe ich es nicht das Ebene 1 ein Plugin der Ebene2 läd. Knackpunkt ist folgender Code
Wenn ich das jar mit den Interfaces (IEbene2Plugin) im Mainprogramm im CP habe dann is es kein Problem und er geht in den If-Zweig, falls nicht erkennt er nur den Typ der Klasse aber nicht das sie ein Interface implementiert. Also er denkt o ist Plugin aber Plugin implements IEbene2Plugin.
Gibt es ne Möglichkeit wie ich dem Ebene1Plugin die Interfaces dynamisch nachladen kann oder eine andere Möglichkeit ausser das Mainprogramm zu manipulieren. Bei nem Plugin ist es ja nicht schön wenn man dafür das Mainprogramm verändern muss ^^.
Danke
Andi
ich habe folgendes Problem. Ich schreibe an einem Plugin welches wieder Plugins haben kann und ich müsste das jar wo die interfaces für die kommunikation zwischen plugin -> plugin enthalten sind nachträglich laden da es ja keinen
Sinn macht diese im CP vom Main Programm zu haben.
Aufbau:
Mainprogramm -> Plugin (Ebene1) -> Plugin (Ebene2)
Ebene 1 und Mainprogramm kommunizieren ganz normal da dem Mainprogramm seine Interfaces bekannt sind. Leider schaffe ich es nicht das Ebene 1 ein Plugin der Ebene2 läd. Knackpunkt ist folgender Code
Code:
JarClassLoader jarLoader = new JarClassLoader(this.pluginFile.getAbsolutePath());
String className = jarLoader.getClassNamefromManifest();
Class c = jarLoader.loadClass(className, true);
Object o = c.newInstance();
if(o instanceof IEbene2Plugin) {
this.plugin = (IEbene2Plugin) o;
}
Wenn ich das jar mit den Interfaces (IEbene2Plugin) im Mainprogramm im CP habe dann is es kein Problem und er geht in den If-Zweig, falls nicht erkennt er nur den Typ der Klasse aber nicht das sie ein Interface implementiert. Also er denkt o ist Plugin aber Plugin implements IEbene2Plugin.
Gibt es ne Möglichkeit wie ich dem Ebene1Plugin die Interfaces dynamisch nachladen kann oder eine andere Möglichkeit ausser das Mainprogramm zu manipulieren. Bei nem Plugin ist es ja nicht schön wenn man dafür das Mainprogramm verändern muss ^^.
Danke
Andi