Avatar billede morphix Nybegynder
12. december 2002 - 12:41 Der er 2 kommentarer og
1 løsning

Dynamisk loading af classes (cache problem)

Jeg har en class loader som ser sådan ud:

    void loadclass(String classname)
    {
        try
        {
            if(plugin!=null)
              {
                    addtomemo(plugin.start());
                  return;
              }
            c = Class.forName(classname);
            plugin = (Snapin)c.newInstance();
            addtomemo(plugin.start());
        }
        catch (Exception e)
        {
            System.out.println("Error occurred loading class: " + classname);
        }
    }



Og det virker upåklageligt når der skal loades nogle classes der skal loades... Men...
Problemet er hvis jeg mens mit program kører recompile're min plugin og genloader min plugin class... sådan:
plugin = null;
System.gc();/*jeg troede mit problem var noget med garbage colectoren ikke fik kørt finalize... men det er ikke det der er problemet*/
loadclass("plugintest");

min classloader loader classen igen, men fra javas cache...

er der nogen der kan hjælpe mig her vil jeg blive MEGET GLAD!!!!!!!
Avatar billede carstenknudsen Nybegynder
12. december 2002 - 12:53 #1
Du skal sørge for at bruge en ny class loader hver
gang du loader. Det kan du gøre ved at benytte
URLClassLoader klassen, der tager en URL[] som
argument, der behøver du bare tilføje et element,
nemlig hvor din .class fil kommet til at ligge/ligger.
Avatar billede morphix Nybegynder
12. december 2002 - 13:57 #2
Jeg glemte vist at skive at det skal afvikles på en java VM 1.1
Avatar billede carstenknudsen Nybegynder
12. december 2002 - 15:17 #3
Uha, så må du nedarve fra ClassLoader og læse
class filen ind i en array hvorefter du kalder
metoden defineClass (der er protected, derfor
nedarvningen). Så kan du loade nye versioner
af klasser der bliver kompileret under runtime.
Hvis du bruger den normale Class.forName
husker JVM'en hvad den har loadet og du får den gamle.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester