[Java] class reloading

Pagina: 1
Acties:

  • Diotoir
  • Registratie: Januari 2002
  • Laatst online: 19:34
Voor een projectje waar ik mee bezig ben zou het handig zijn als ik een class kan veranderen en dat hij dan opnieuw geladen wordt, zonder dat ik mijn hele programma opnieuw moet opstarten

het opstarten heb ik gevonden hoe dat werkt, maar daarvoor moet wel eerst de "oude versie" van die class unload worden en nu kan ik niet vinden hoe dat moet.

Iemand die weet hoe ik dit moet doen?

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Dit noemen ze dynamic class loading :
code:
1
2
3
4
5
6
7
8
9
10
Class classParamaters[] = {String.class};
Object objectParamaters[] = {new String("Hello World")};

Class myClass = Class.forName("java.lang.String");

Constructor constr = myClass.getConstructor(paramaters);

String myString = (String)constr.newInstance(objectParamaters) ;

System.out.println (myString);

Hierover is veel meer te vinden op forum.java.sun.com

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • Diotoir
  • Registratie: Januari 2002
  • Laatst online: 19:34
Het loaden lukt wel, dat had ik al gevonden, maar het unloaden lukt niet, en zolang hij niet unload is kan je niet je verbeterde versie ervan loaden

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-


  • Diotoir
  • Registratie: Januari 2002
  • Laatst online: 19:34
Daar heb ik gezocht en alleen maar het dynamisch laden van classes, het enige wat er stond is dat als je een classFinalize methode maakt dat die uitgevoerd wordt op het moment dat de class gefinalized wordt, maar niet hoe dat moet, en daar kom ik dus niet achter.

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Wat je kan proberen is het volgende :

ClassLoader.loadClass("java.lang.String", false);

the false houd in dat hij niet gaat kijken of deze al in het geheugen voorkomt maar hem altijd opnieuw gaat laden.

Of het werkt weet ik niet maar mischien hebbie er iets aan.

Ergens anders las ik weer dat je ook eventueel de ClassLoader kan vernietigen, maar dat heeft als gevolg dat alle geladen classe uit het geheugen word gehaald.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line

Pagina: 1