Maison > Java > javaDidacticiel > Comment puis-je charger et recharger dynamiquement des fichiers JAR dans mon application Java au moment de l'exécution ?

Comment puis-je charger et recharger dynamiquement des fichiers JAR dans mon application Java au moment de l'exécution ?

Barbara Streisand
Libérer: 2024-11-27 13:31:11
original
1003 Les gens l'ont consulté

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

Comment charger et recharger dynamiquement des fichiers JAR pour les extensions de code d'exécution

Chargement de nouveaux fichiers JAR au moment de l'exécution

Pour charger dynamiquement de nouveaux fichiers JAR pendant que votre application est en cours d'exécution, vous pouvez exploiter la classe URLClassLoader :

ClassLoader loader = URLClassLoader.newInstance(
    new URL[] { yourURL },
    getClass().getClassLoader()
);
Copier après la connexion

Cela crée un nouveau ClassLoader instance qui inclut l’URL spécifiée. Vous pouvez ensuite utiliser ce chargeur de classe pour charger des classes à partir du fichier JAR :

Class<?> clazz = Class.forName("mypackage.MyClass", true, loader);
Copier après la connexion

Ici, clazz représente la classe que vous avez chargée à partir du fichier JAR.

Rechargement des classes existantes

Recharger des classes existantes pendant que votre application est en cours d'exécution peut être plus délicat, car cela peut introduire des incohérences dans les données. Cependant, si nécessaire, vous pouvez suivre ces étapes :

Constructor<?> ctor = runClass.getConstructor();
Runnable doRun = (Runnable) ctor.newInstance();
doRun.run();
Copier après la connexion

Garbage Collection of Class Loaders

Les chargeurs de classes ne sont plus utilisés une fois que les threads et objets associés ne les référencent plus. Ils peuvent ensuite être récupérés, sauf en cas de fuites de mémoire causées par ThreadLocal, les pilotes JDBC ou des problèmes similaires.

Gestion des données persistantes

Si vous devez conserver les données associées aux objets existants pendant Lors du rechargement de classe, vous devriez envisager d'utiliser un mécanisme de persistance tel que la sérialisation pour stocker et restaurer les données.

Class Loader Extensions

Il est également possible d'ajouter de nouvelles classes dans un chargeur de classes existant en utilisant URLClassLoader.addURL. Cependant, en cas d'échec des tentatives de chargement d'une classe, la classe ne sera jamais chargée 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