Avatar billede joshin Nybegynder
14. november 2003 - 11:42 Der er 1 kommentar og
1 løsning

Dynamisk classloading

Jeg vil gerne kunne tilføje klaser i runtime
Idéen er at en klient henter en class fil og gemmer den lokalt, herefter skal den så kunne instantieres.
Her kigget på div. classloadere men uden held.

eksempel kode ønskes
Avatar billede arne_v Ekspert
14. november 2003 - 11:51 #1
En ganske almindelig UrlClassLoader kan bruges. Du skal bare sørge for
at den leder i et directory hvor parent classloader *ikke* leder.

Jeg lavede for nogle måneder siden dette her lille eksempel:

import java.io.*;
import java.net.*;

public class DoubleDynmaic {
  private static void dynno(int n) {
      (new File("test")).mkdir();
      try {
        OutputStream os = new FileOutputStream("test/Test.java");
        PrintStream ps = new PrintStream(os);
        ps.println("public class Test {");
        ps.println("  public Test() {");
        ps.println("      System.out.println(" + n + ");");
        ps.println("  }");
        ps.println("}");
        ps.close();
        os.close();
        Runtime.getRuntime().exec("javac -d test test/Test.java").waitFor();
        URL[] url = new URL[1];
        url[0] = new URL("file:test/");
        URLClassLoader cl = new URLClassLoader(url);
        Class.forName("Test", true, cl).newInstance();
      } catch (Exception e) {
        e.printStackTrace();
      }
  }
  public static void main(String[] args) {
      for(int i = 0; i < 10; i++) {
        dynno(i);
      }
  }
}

Om du compiler class filen eller downloader den er naturligvis lige meget.
Avatar billede joshin Nybegynder
14. november 2003 - 14:07 #2
Det spiller...
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