# Plugin mit eigenem ClassLoader



## rgubler (8. Jan 2008)

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


----------



## Wildcard (13. Jan 2008)

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


----------



## rgubler (13. Jan 2008)

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


----------

