Maison > Java > javaDidacticiel > Comment puis-je charger et recharger dynamiquement des classes Java et des fichiers JAR dans un système en cours d'exécution ?

Comment puis-je charger et recharger dynamiquement des classes Java et des fichiers JAR dans un système en cours d'exécution ?

DDD
Libérer: 2024-12-04 18:17:11
original
339 Les gens l'ont consulté

How Can I Dynamically Load and Reload Java Classes and JAR Files in a Running System?

Chargement d'un nouveau code dans un système Java en cours d'exécution

Rechargement des classes

Rechargement des classes existantes avec les données existantes peuvent entraîner une instabilité dans votre système. Envisagez plutôt d'utiliser l'approche suivante :

  • Instancier un nouveau URLClassLoader avec le chemin d'accès au fichier JAR mis à jour.
  • Chargez les nouvelles classes dans le nouveau chargeur de classe et transtypez-les dans leur sous-classes appropriées.
  • Créez une instance de la classe chargée et exécutez l'exécution méthode.

Chargement de nouveaux fichiers JAR

Pour charger un nouveau fichier JAR dans un système Java en cours d'exécution :

  1. Créez un URLClassLoader avec l'URL du nouveau fichier JAR.
  2. Utilisez la méthode ClassLoader.newInstance pour créer une nouvelle instance du chargeur de classe.
  3. Chargez les nouvelles classes dans le nouveau chargeur de classe à l'aide de Class.forName.
  4. Instancier les classes chargées et exécutez toutes les actions nécessaires.

Collecte des déchets des chargeurs de classes inutilisés

Chargeurs de classes qui ne sont plus présents l'utilisation sera récupérée, à condition qu'il n'y ait pas de fuite de mémoire. Les sources courantes de fuites de mémoire incluent ThreadLocal, les pilotes JDBC et java.beans.

Préservation des données d'objet

Si vous avez besoin que les données d'objet persistent lors des rechargements de classe, envisagez d'utiliser un mécanisme de persistance comme la sérialisation.

Ajout de nouvelles classes à une classe existante Chargeurs

Bien qu'il soit possible d'ajouter de nouvelles classes aux chargeurs de classes existants à l'aide de URLClassLoader.addURL, sachez que si une classe ne parvient pas à se charger pendant ce processus, elle ne pourra pas se charger dans cette classe. instance de chargeur.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal