Plugin mit eigenem ClassLoader

Status
Nicht offen für weitere Antworten.

rgubler

Mitglied
Hallo,

ich habe folgendes Problem:

Eine bestehende Java Applikation soll um eine GUI-Funktionalität erweitert werden. Für diesen GUI-Teil wird ein kommerzielles Java Framework benutzt.
Dieses schreibt zwingend (Funktion bzw. Support) bestimmte thirdparty-jars vor.
Meine Idee war jetzt einen eigenen ClassLoader zu schreiben, der die GUI-Einstiegsklasse lädt und ab da werden
die Klassen von diesem CLassLoader automatisch geladen. Leider ist im java xml api das Laden der xml klassen über
Thread.currentThread().getContextClassLoader() :bahnhof: realisiert.

Da mein GUI-Teil ja im AWT-Thread läuft kann ich den ContextClassLoader nicht auf meinen umbiegen, da sonst das restliche System den falschen ClassLoader benutzt.

Wie kann ich ein "Plugin" schreiben, dass z.B. eine JPanel liefert und alles was in diesem Panel "geladen" ist benutzt den eigenen ClassLoader (auch Event, Timer, ... - Methoden)?

Ich hoffe, dass ich mich verständlich ausgedrückt habe.


Viele Grüße

Rüdiger
 
Bevor du einen Classloader verwenden kannst, wird immer zuerst der Parent Classloader auf die Suche geschickt.
Wozu soll der Classloader überhaupt gut sein?
 
Hallo Wildcard,

die Applikation in die mein GUI-Teil (GIS-Anwendung) integriert werden soll muss zwingend z.B. jdom 1.0b9 verwenden. Es kann aber von der Hauptapplikation nicht erwartet werden, dass genau dieses jdom da ist. Desshalb meine Idee einen Classloader zu schreiben, der einen eigenen Classpath hat.

Das ganze funktioniert auch bis auf die java xml-api die über Thread.currentThread().getContextClassLoader() versucht xml Dateien im Classpath zu lesen bzw. der Readerklassen lädt.

Da die Lesevorgänge im zugekauften Framework sind habe ich keine Möglichkeit auf das Laden Einfluss zu nehmen. Die Lesevorgänge laufen im AWT-Thread und den teile ich mir ja mit der Hauptapplikation.

So wie ich das jetzt sehe läuft das alles auf die Verwendung von OSGI bzw. JPF sowohl bei der Hauptapplikation als auch in meinem Teil hinaus.


Viele Grüße

Rüdiger
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben