Heim > Java > javaLernprogramm > Wie kann ich JARs in meiner Java-Anwendung zur Laufzeit dynamisch laden und neu laden?

Wie kann ich JARs in meiner Java-Anwendung zur Laufzeit dynamisch laden und neu laden?

Barbara Streisand
Freigeben: 2024-11-27 13:31:11
Original
982 Leute haben es durchsucht

How Can I Dynamically Load and Reload JARs in My Java Application at Runtime?

So laden und laden Sie Jars für Laufzeitcodeerweiterungen dynamisch

Neue Jars zur Laufzeit laden

Um neue JAR-Dateien dynamisch zu laden, während Ihre Anwendung ausgeführt wird Wenn Sie ausgeführt werden, können Sie die URLClassLoader-Klasse nutzen:

ClassLoader loader = URLClassLoader.newInstance(
    new URL[] { yourURL },
    getClass().getClassLoader()
);
Nach dem Login kopieren

Dadurch wird eine neue ClassLoader-Instanz erstellt die die angegebene URL enthält. Anschließend können Sie diesen Klassenlader verwenden, um Klassen aus der JAR-Datei zu laden:

Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
Nach dem Login kopieren

Hier stellt clazz die Klasse dar, die Sie aus der JAR-Datei geladen haben.

Vorhandene Klassen neu laden

Das Neuladen vorhandener Klassen während der Ausführung Ihrer Anwendung kann schwieriger sein, da es zu Dateninkonsistenzen führen kann. Bei Bedarf können Sie jedoch die folgenden Schritte ausführen:

Constructor<?> ctor = runClass.getConstructor();
Runnable doRun = (Runnable) ctor.newInstance();
doRun.run();
Nach dem Login kopieren

Garbage Collection von Klassenladern

Klassenlader werden nicht mehr verwendet, sobald die zugehörigen Threads und Objekte nicht mehr auf sie verweisen. Sie können dann durch Garbage Collection gesammelt werden, es sei denn, es liegen Speicherlecks vor, die durch ThreadLocal, JDBC-Treiber oder ähnliche Probleme verursacht werden.

Umgang mit persistenten Daten

Wenn Sie die mit vorhandenen Objekten verknüpften Daten währenddessen beibehalten müssen Beim erneuten Laden von Klassen sollten Sie in Betracht ziehen, einen Persistenzmechanismus wie die Serialisierung zum Speichern und Wiederherstellen der Daten zu verwenden.

Klassenlader-Erweiterungen

It Es ist auch möglich, mithilfe von URLClassLoader.addURL neue Klassen zu einem vorhandenen Klassenlader hinzuzufügen. Fehlgeschlagene Versuche, eine Klasse zu laden, führen jedoch dazu, dass die Klasse nie in dieser Klassenlader-Instanz geladen wird.

Das obige ist der detaillierte Inhalt vonWie kann ich JARs in meiner Java-Anwendung zur Laufzeit dynamisch laden und neu laden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage