Wie laden alle Klassen eines jar-Datei zur Laufzeit?

Laut diese Frage, ist es möglich, eine Klasse zu laden, aus einer jar-Datei mit:

ClassLoader loader = URLClassLoader.newInstance(
    new URL[] { jarFileURL },
    getClass().getClassLoader()
);
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);

Laden alle Klassen in eine jar-Datei?

  • warum auf der Erde Sie dies tun wollen?
  • Vorzeitige Optimierung? Kann nicht dulden, Latenz in einem kritischen Abschnitt des Codes? So oder so, besser, einfach zu machen, ein Objekt von jedem der "kritischen" diejenigen, die, bevor Sie den kritischen Abschnitt in einem solchen Fall.
  • Hier ist eine praktische Anwendungsfall: wenn Sie schreiben, ein update-tool wie getdown (code.google.com/p/getdown) und ersetzen Sie Ihre eigenen jar und ignoriert, dass dies möglicherweise ein wenig zerbrechlich), der class loader wir haben versucht, nicht laden Sie eine neue Klasse (wie die Datei zu behandeln hat sich vermutlich ungültig). Wenn wir das pre-load für alle Klassen, die benötigt werden, bis zum Ende der updater, wir sind in Ordnung.
  • Hier ist ein weiterer praktischer Anwendungsfall: Workaround für die classloader-bug dokumentiert unter bugs.java.com/bugdatabase/view_bug.do?bug_id=8022063
InformationsquelleAutor julien | 2011-09-27
Schreibe einen Kommentar