Heim >Java >javaLernprogramm >Wie kann ich JAR-Dateien einer laufenden Java-Anwendung neu laden oder hinzufügen?

Wie kann ich JAR-Dateien einer laufenden Java-Anwendung neu laden oder hinzufügen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 04:10:09926Durchsuche

How Can I Reload or Add JAR Files to a Running Java Application?

JAR-Dateien zur Laufzeit neu laden und laden

Damit Ihr Java-System während der Ausführung Klassen laden und neu laden kann, beachten Sie Folgendes:

Vorhandene Klassen neu laden

Versuch Das Neuladen vorhandener Klassen mit ihren Daten ist im Allgemeinen nicht ratsam, da dies zu Systeminstabilität führen kann.

Neue Klassen hinzufügen

Das Laden neuer Klassen in separate Klassenlader ist eine praktikable Option:

ClassLoader loader = URLClassLoader.newInstance(new URL[] { yourURL }, getClass().getClassLoader());
Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
Class<? extends Runnable> runClass = clazz.asSubclass(Runnable.class);
Constructor<? extends Runnable> ctor = runClass.getConstructor();
Runnable doRun = ctor.newInstance();

Klassenlader-Müll Sammlung

Klassenlader, die nicht mehr verwendet werden, können vom Garbage Collector zurückgefordert werden, vorausgesetzt, es liegen keine Speicherlecks vor (die bei ThreadLocal, JDBC-Treibern usw. auftreten können).

Datenpersistenz

Um Objektdaten über Klassenneuladungen hinweg beizubehalten, sollten Sie Persistenzmechanismen in Betracht ziehen wie Serialisierung.

Ausgefallene Debugging-Tricks

Obwohl Debugging-Systeme erweiterte Funktionen bieten, sind sie oft weniger zuverlässig und schwieriger zu debuggen.

Hinzufügen Klassen zu einem vorhandenen Klassenlader

Obwohl URLClassLoader das Hinzufügen neuer Klassen ermöglicht URLs: Wenn eine Klasse anfänglich nicht geladen werden kann, wird sie nie innerhalb dieser Klassenlader-Instanz geladen.

Das obige ist der detaillierte Inhalt vonWie kann ich JAR-Dateien einer laufenden Java-Anwendung neu laden oder hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn