cachender ClassLoader u.v.m.

Status
Nicht offen für weitere Antworten.

Gosi

Mitglied
Moin,

ich habe ein kleines Probleme mit meinem Programm.
Es soll durch Plugins erweiterbar sein. (klappt auch schon mehr oder weniger)
Die Plugins sollen "live" neu geladen werden können.
Hier ist das Problem: Der URLClassLoader scheint das zu cachen. Es wird nicht das veränderte Plugin geladen sonder das alte aus dem cache.

Wie kann man das umgehen?


Dann noch mal ein ganz Grundlägende Sache. Ich entwickle das Programm in Eclipse und habe auch einige test plugins im Projekt. Nur kann ich die leider nicht so laden wie in der end Fassung des Programms da die Ordnerstruktur ganz anders ist.
Gibt es für ein solches Vorhaben ein gutes Tutorial. Sollte ja ein häufiges Problem sein. Habe schon gesucht aber nicht das richtige gefunden. Es gibt ein Plugin framework aber das ist mir ein wenig zu groß für das kleine Program.

Abschließend noch was. Kann ich die Plugins "zwingen" nur in bestimmte Ordner zu schreiben/zuzugreifen??

Und doch noch was ;-).
Wenn so ein plugin threads startet kann ich die dann irgentwie mit beenden wenn ich das plugin stoppe?




Man man man Fragen über Fragen. Hoffe ihr könnt mir da ein wenig auf die Sprünge helfen.
Gruß und Dank

Gosi
 
R

Roar

Gast
uf, also zur ersten frage:
ich glaub das ist nicht möglich, da das weniger am classloader sondern mehr an der VM liegt. die cachet nämlich die klassen. wenn man dann übernen classloader ne neue laden will, wird die Clas instanz der zuvor geladenen zurückgeliefert. vielleicht kann man da was mit defineClass() was drehen?

zu 2: du könntest dir nen ant script bauen, was die entsprechenden dateien und so verschiebt, dass am ende die ordnerstruktur rauskommt, die du haben willst :?

zu 3: vielleicht kannst du dir mit SecurityManagern oder so ne art eigene sandboc zusammenbauen, aber den ordnerzugriff einschrönken, hmm :-/

zu 4: das wirst du so wahrshceilnic hauch nicht machen können. selbst wenn du die thread instanzen hättest, solltest du sie nicht mit stop() stoppen, also abschliessend:

vertrau doch einfach auf zuverlässige, gutartige plugins, die nur dorthin schireben, wo sie sollen und ihre threads selber stoppen ;)
 

Wildcard

Top Contributor
Roar hat gesagt.:
uf, also zur ersten frage:
ich glaub das ist nicht möglich, da das weniger am classloader sondern mehr an der VM liegt. die cachet nämlich die klassen. wenn man dann übernen classloader ne neue laden will, wird die Clas instanz der zuvor geladenen zurückgeliefert. vielleicht kann man da was mit defineClass() was drehen?
Das geht eigentlich sogar ziemlich einfach. Die neu zu ladende Klasse darf allerdings nicht vom Standard-ClassLoader sichtbar sein.
Man erstellt einfach für jede neu zu ladende Klasse einen eigenen ClassLoader und bekommt so die aktuelle Version der Klasse.
 
R

Roar

Gast
Wildcard hat gesagt.:
Roar hat gesagt.:
uf, also zur ersten frage:
ich glaub das ist nicht möglich, da das weniger am classloader sondern mehr an der VM liegt. die cachet nämlich die klassen. wenn man dann übernen classloader ne neue laden will, wird die Clas instanz der zuvor geladenen zurückgeliefert. vielleicht kann man da was mit defineClass() was drehen?
Das geht eigentlich sogar ziemlich einfach. Die neu zu ladende Klasse darf allerdings nicht vom Standard-ClassLoader sichtbar sein.
Man erstellt einfach für jede neu zu ladende Klasse einen eigenen ClassLoader und bekommt so die aktuelle Version der Klasse.
hast du das mal probiert ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
L Eigenener ClassLoader wirft java.lang.NoClassDefFoundError Allgemeine Java-Themen 0
D Classloader ohne Package Allgemeine Java-Themen 10
N Klasse via ClassLoader laden Allgemeine Java-Themen 2
D ClassLoader für Variablen einer Klasse setzen Allgemeine Java-Themen 24
K [Refactoring] ClassLoader Verzeichnis durchsuchen lassen Allgemeine Java-Themen 7
schlingel Webstart/Applet Problem - Classloader-Bug Allgemeine Java-Themen 7
M Security Manager für bestimmte Klassen/Classloader? Allgemeine Java-Themen 3
hdi ClassLoader / Constructor Call intern Allgemeine Java-Themen 11
C inteface not visible from classloader Allgemeine Java-Themen 2
M jdbc treiber (h2) mit eigenem ClassLoader laden Allgemeine Java-Themen 4
B Eigener ClassLoader Allgemeine Java-Themen 9
MQue ClassLoader Pfad ausgeben Allgemeine Java-Themen 6
S Problem mit ClassLoader.getSystemResource !! Allgemeine Java-Themen 3
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
J Eigener ClassLoader wird nicht immer verwendet Allgemeine Java-Themen 3
E Wieder mal der Classloader Allgemeine Java-Themen 6
F ClassLoader und "Cache" Allgemeine Java-Themen 2
MQue ClassLoader Allgemeine Java-Themen 5
N ClassLoader - Laden von Bytecode aus einer Datenbank Allgemeine Java-Themen 6
P Klasse über eigenen Classloader laden: SecurityException Allgemeine Java-Themen 11
N Classpath mit ClassLoader künstlich erweitern Allgemeine Java-Themen 2
P System.getProperty zu Classloader Allgemeine Java-Themen 21
G Classloader Problem Allgemeine Java-Themen 10
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
MQue ClassLoader Allgemeine Java-Themen 18
G Problem mit URL classloader Allgemeine Java-Themen 10
S classloader + jar + resourcen in dem jar Allgemeine Java-Themen 4
F mit classloader klassen ausserhalb *.jar einlesen Allgemeine Java-Themen 4
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
P Kompilerfehler: at java.lang.ClassLoader.loadClassInternal(U Allgemeine Java-Themen 16
T ClassLoader und Zugriff auf unbekannte Klassen Allgemeine Java-Themen 5
C ClassLoader - dymisches Laden von JDBC Drivers Allgemeine Java-Themen 3
R Problem mit Classloader Allgemeine Java-Themen 2
D Programm mit eigenem ClassLoader funktioniert nicht Allgemeine Java-Themen 12
K Problem mit ClassLoader - Laden von Resourcen aus Jar's Allgemeine Java-Themen 14
C Problem mit ClassLoader Allgemeine Java-Themen 2
T Brauche Hilfe bei ClassLoader Allgemeine Java-Themen 2
G ClassLoader Allgemeine Java-Themen 3
R ClassLoader funktioniert in Verbindung mit JAR-Datei nicht Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben