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
Barbara Streisandoriginal
2024-12-06 04:10:09924parcourir

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();

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!

Déclaration:
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