Maison > Java > javaDidacticiel > Comment puis-je recharger ou ajouter des fichiers JAR à une application Java en cours d'exécution ?

Comment puis-je recharger ou ajouter des fichiers JAR à une application Java en cours d'exécution ?

Barbara Streisand
Libérer: 2024-12-06 04:10:09
original
926 Les gens l'ont consulté

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

Rechargement et chargement des fichiers JAR au moment de l'exécution

Pour permettre à votre système Java de charger et de recharger des classes pendant l'exécution, considérez ce qui suit :

Rechargement des classes existantes

Tentative de recharger les classes existantes avec leurs données est généralement déconseillé car cela peut entraîner une instabilité du système.

Ajout de nouvelles classes

Le chargement de nouvelles classes dans des chargeurs de classes distincts est une option viable :

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();
Copier après la connexion

Déchets du chargeur de classe Collection

Les chargeurs de classes qui ne sont plus utilisés peuvent être récupérés par le garbage collector, en supposant qu'il n'y ait pas de fuite de mémoire (ce qui peut survenir avec ThreadLocal, les pilotes JDBC, etc.).

Persistance des données

Pour préserver les données des objets lors des rechargements de classe, envisagez des mécanismes de persistance tels que sérialisation.

Astuces de débogage sophistiquées

Bien que les systèmes de débogage offrent des fonctionnalités avancées, ils sont souvent moins fiables et plus difficiles à déboguer.

Ajout Classes vers un chargeur de classe existant

Bien que URLClassLoader permette en ajoutant de nouvelles URL, si une classe ne parvient pas à se charger initialement, elle ne se chargera jamais dans cette instance de chargeur de classe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal